C語言學習筆記之數據類型

1、整數類型

1.1 類型

類型 位數
short(或short int) 16位
int 16位或32位
long (或long int) 32位
long long(或long long int) 64位

注意:
(1)如果在long類型等於int類型的系統中編寫代碼,當確實需要32位整數是,應使用long類型,以便使程序移植到int類型爲16位的機器上後仍然可以正常工作。
(2)通常,數字常量以int類型存儲,如果使用1000000這樣的數字int類型不能表示時,編譯器會視其爲long int類型,如果仍然不夠,會視其爲long long int類型。
(3)如果希望把一個數字常量作爲long類型對待,可以使用‘l’或‘L’後綴。使用’L’後綴是更好的選擇,因爲‘l’與數字1很相近。
(4)與之類似,可以使用‘ll’或者‘LL’後綴標識long long類型。

1.2 數制

數制 表示方法
八進制 前綴‘0’
十進制 無前綴
十六進制 前綴‘0x’或者‘0X’

這種使用不同數制系統的選擇是爲了方便而提供的,它並不影響數字的存儲。無論16、020、0x10,計算機內部都是使用二進制編碼進行存儲。

2、字符類型

表示方法 例子
單引號 char ch = ‘A’;
ASCII碼 char ch = 65;
轉義序列 char ch = ‘\n’;
反斜槓 +數字 char ch = ‘\020’;

注意:
(1)上述‘反斜槓 +數字’表示方法中,數字爲八進制或者十六進制,如果沒有用‘x’前綴,則爲八進制,

char ch1 = '\020';   
char ch2 = '\20';  
char ch3 = '\x10';

所以上述三個例子效果相同。

(2)C語言將字符常量視爲int類型存儲。

char grade = 65;    \*對於ASCII,這是可以的;但這是一種不好的編程風格*\
char grade2 = 'A';  \*與上一條有類似的效果*\

char grade = 'FATE';
printf("%c", grade);    //將打印出‘E’,因爲C將這四個獨立的8位
                        //ASCII碼存儲在一個32位的單元中。所以如果
                        //把這個字符常量賦給一個char變量,那麼只有
                        //最後8位會起作用。

(3)如果再轉義序列和其對應的ASCII碼之間做出選擇,應該使用轉義序列,因爲轉義字符更容易記憶,而且移植性更好。
(4)當需要使用數值編碼時,使用‘\032’而不是032。首先,‘\032’能更清晰的表達程序員表示一個字符編碼的意圖;其次,‘\032’這樣的轉義序列可以嵌入到C字符串中,比如字符串“hello!\007\n”中就嵌入了‘\007’。

3、浮點數類型

3.1 浮點類型

float:系統的基本浮點類型。至少能精確表示6位有效數字。
double:範圍(可能)更大的浮點類型。能表示比float類型更多的有效數字以及更大的指數。
long double:範圍(可能)更大的浮點類型。能表示比double類型更多的有效數字以及更大的指數。

3.2 表示方法

float a = -1.34E-12;    //e或者E表示10的指數
float b = 2.23e21;
float c = 0xa.1fp10;    //p或者P表示2的指數(十六進制表示法)

4、複數和虛數類型(用的不多,省略)

注意:
char類型肯定是1字節,因爲C把char類型的長度定義爲1個字節。所以在char類型長爲16位,double類型長爲64位的系統中,sizeof將報告double類型有4字節長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章