[C++学习笔记]C++常见问题大全(二)
C語言中unsigned和signed在聲明時有什么作用、
1、unsigned的作用就是將數字類型無符號化, 例如 int 型的范圍:-2^31 ~?2^31 - 1,而unsigned int的范圍:0 ~ 2^32。看起來unsigned 是個不錯的類型,尤其是用在自增或者沒有負數的情況。但是在實際使用中會出現一些意外的情況。
2、signed在默認情況下聲明的整型變量都是有符號的類型(char有點特別),如果需聲明無符號類型的話就需要在類型前加上unsigned。無符號版本和有符號版本的區別就是無符號類型能保存2倍于有符號類型的正整數數據。
C++ 產生隨機數 srand和time
srand( ( unsigned )time( NULL ) ); //是用當前的時間值來作為隨機數種子。任何的隨機數發生器都需要一個”種子“。
time函數返回當前日歷時間的秒數。他的返回值類型為 time_t 。
(unsigned )time( 0 )前的(unsigned )是把返回值強制轉換為(unsigned )型。
這個函數原型是time_t time( time_t * ),因為編譯器對0和NULL作了隱示轉換,所以time( 0 )等價于time( NULL )。
rand函數實際上是偽隨機數,所以要用srand()來完成,以便產生不同的隨機數,這個過程叫做隨即化。
srand函數取一個unsigned類型的整數參數并內嵌rand函數,即種子
如果不初始化隨機數種子,每次隨機出來的都會是同一個數。
在C++中:rand和srand兩個函數都位與<cstdlib>(被包含于iostream中)
? ? ?原型:void ?srand(unsigned ?int ? seed)
? ? ? ? ? ? ? ?void ?rand ?(void)
seed相當于一個種子,srand函數根據這個種子seed,設置一個隨機起點,而rand函數根據這個隨機起點,返回一個隨機數【seed ? ,RAND_MAX】,其中RAND_MAX是0x7ffff,但是是一個偽的隨機數(多次編譯產生的隨機數是一樣的,除非給一個變化的種子)
srand rand?RAND_MAX 分別是什么意思?
stdlib.h頭文件中有宏#define RAND_MAX 0x7fff
rand()產生一個0到0x7ffff即0到32767之間的隨機數
rand()/(RAND_MAX+1.0)就等于一個0到1之間的小數了,因為rand()最大是32767最小是0,再除以32768就是一個0到1之間的小數(不能等于1),再乘以10就是一個0到10之間的數了(不等于10).最后再加1,就成了一個求1到10之間隨機數的式子了.
srand函數是隨機數發生器的初始化函數,原型:
void srand(unsigned seed);
它需要提供一個種子,如:
srand(1);
直接使用1來初始化種子。
printf("%10.6f\n",pi*4) 在c語言中是什么意思?
printf是c語言中的輸出函數,這條語句輸出pi*4,pi是變量,是用戶自己定義的,賦值應該是3.141592654!
重點來了,%10.6f中10是指輸出結果的寬度是10,6是指輸出結果小數點后四舍五入,精度為6位!
追答最后輸出的結果為 12.566370
總結
以上是生活随笔為你收集整理的[C++学习笔记]C++常见问题大全(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典面试题(35):以下代码将输出的结果
- 下一篇: 【新年礼物】阿里资深p8教你学习Web全