數據類型:分爲整形 , 浮點型
整形: short int long longlong
整型有無符號(unsigned)和有符號(signed)兩種類型,在默認情況下聲明的整型變量都是有符號的類型(char有點特別),如果需聲明無符號類型的話就需要在類型前加上unsigned。無符號整型和有符號整型的區別就是無符號類型可以存放的正數範圍比有符號整型中的範圍大一倍,因爲有符號類型將最高位儲存符號,而無符號類型全都儲存數字。比如16位系統中一個int能存儲的數據的範圍爲-32768~32767,而unsigned能存儲的數據範圍則是0~65535。在一些不可能取值爲負數的時候,可以定義爲unsigned,在一些底層的嵌入式編程的數據一般都是無符號的。
short : 默認是有符號的 -32768~~32767 無符號的 0~65535 內存字節是2
int : 默認是有符號的 -2147483648~2147483647 無符號的 0~4294967295 內存字節爲4
long: 默認是有符號的 -2147483648~2147483647 無符號爲 0~4294967295 內存字節爲4
longlong:默認有符號的 -2^63~2^63-1 無符號爲0~2^64-1 內存字節爲8 (vc6.0不支持longlong類型)
這些整型都是用%d輸出
通常情況下 默認 longlong的字節數大於等於long的字節數大於等於int的字節數大於等於short的字節數
可以使用 sizeof()函數來看字節數的大小 : 例如 int i = 3; printf("%d\n",sizeof(i));
浮點型:float double longdouble
float是默認打印6位數 輸出的時候用%f
double 輸出的時候用%lf
科學記數法 輸出的時候用%e
float 內存爲4字節 表示0的時候 要用0.0
double內存爲8字節
精度表:
通常情況下 默認 longlong的字節數大於等於long的字節數大於等於int的字節數大於等於short的字節數
可以使用 sizeof()函數來看字節數的大小 : 例如 int i = 3; printf("%d\n",sizeof(i));
單精度浮點數(float)與雙精度浮點數(double)的區別如下:
(1)在內存中佔有的字節數不同
-
單精度浮點數在機內佔4個字節
-
雙精度浮點數在機內佔8個字節
(2)有效數字位數不同
-
單精度浮點數有效數字8位
-
雙精度浮點數有效數字16位
(3)所能表示數的範圍不同
-
單精度浮點的表示範圍:-3.40E+38 ~ +3.40E+38
-
雙精度浮點的表示範圍:-1.79E+308 ~ +1.79E+308
(4)在程序中處理速度不同一般來說,CPU處理單精度浮點數的速度比處理雙精度浮點數快
通常情況下 默認 longdouble的字節數大於等於double的字節數大於float的字節數
可以使用 sizeof()函數來看字節數的大小 : 例如 double i = 3.0; printf("%lf\n",sizeof(i));
注意:1. 默認情況下 浮點數都是 double類型 所以 在定義 浮點數的時候 需要在 後面加上f 例如 float l = 12.4F
2.輸出的時候 如果是 printf(%數字1.數字2 f) 代表了 全部的長度爲數字1 小數點後面的長度爲數字2 必須是有效範圍內進行四捨五入, 只有數字一的長度包括了數字2的長度纔會有作用 否則無效當數字1是負數的時候,是右對齊,當數字1是正數的時候,是左對齊。
3.scanf 輸入浮點型的時候 必須一一對應 float對應 %f double對應%lf longdouble 對應 %lf
&: 取地址符 int a ; printf("%p\n",&a); 會打印出a所在的地址,
改變一個有初始值的數的值 int a = 10; printf("前%d\n",a); scanf("%d",&a); printf("%d\n",a);
注意: 1 scanf 必須是取要改變數值a的地址,而不是定義的這個a.
2 scanf 輸入的時候 必須和前面定義的這個數據的類型相同 例如 前面是 int 那麼 scanf裏面必須是%d 如果前面是String 那麼scanf必須是%s
3 scanf 輸入的時候 可以連續輸入多個值 例如 int a =1,b=10; printf("前:%d,%d\n",a,b); scanf("%d%d",&a,&b); printf("後:%d,%d\n",a,b); 連續輸入多個的時候要默認 用空格分開,要連着寫兩個轉運符,print打印的時候需要寫兩個轉運符中間用逗號分開。
4 scanf 輸入的分隔符 可以自定義分割符 scanf("%d 中間的分隔符 可以是逗號 字母 %d ",&a,&b); 用哪一種分隔符號分開 在輸入的時候就必須對應哪一種符號。不 然會出現問題。
5 scanf 輸入的時候不能加入\n這個換行符,不然會出現問題。導致無法輸入。
通常情況下 默認 longlong的字節數大於等於long的字節數大於等於int的字節數大於等於short的字節數
可以使用 sizeof()函數來看字節數的大小 : 例如 int i = 3; printf("%d\n",sizeof(i));