C語言中的數據類型能分為四種:基本數據類型、構造數據類型、指針數據類型和空類型。
1、基本數據類型
基本數據類型可以分為三種:整型、字符型、浮點型
整形:短整型、基本整型、長整型、長長整型。
一般情況下在不同的編譯器中相同的數據類型占用的字節數也不同。一下介紹在CodeBlock編譯器中的統計。
類型名稱 字節數
short[int] 2
int 4
long[int] 4
long long[int] 8
在C++中提供了可以計算字節數的方法sizeof(),如下例子:
//sizeof(i)求字節數運算符 short sh = 2; printf("short的字節數為:%d\n",sizeof(sh)); int i = 1; printf("int的字節數為:%d\n",sizeof(i)); long l = 1; printf("long的字節數為:%d\n",sizeof(l)); long long ll = 24; printf("long long的字節數為:%d\n",sizeof(ll)); float fl = 2.1111; printf("float的字節數為:%d\n",sizeof(fl)); double dou = 2.333; printf("double的字節數為:%d\n",sizeof(dou)); long double ld = 2.333; printf("long double的字節數為:%d\n",sizeof(ld)); char ch = "A"; printf("char的字節數為:%d\n",sizeof(ch));
運算結果如下:
此外整型數據在內存中存儲的方式是以二進制的形式存儲的。實際上數值是以補碼的形式表示的。正數的補碼和原碼一致,如果該數是負數,它的補碼計算方式為:該數的絕對值的二進制、各位取反再加一得到補碼。
比如:
short s = 10;
變量s在內存中存放的方式:
0000 0000 0000 1010
而
short s = -10;
變量s在內存中存放的方式:
1111 1111 1111 0110
從上面可以看出第一個比特位為0表示正數,1表示負數。
字符型
字符型在C語言中只占用一個字節,而且在內存中是以對應的ASCII碼形式存放的,因此和整型的存儲形式是一樣的。
在C語言中也有轉義字符,這些轉義字符的特性是當從鍵盤上輸入這個字符時,顯示器上就會顯示這個字符,比如a、b、c、$、+和空格符都是可顯示字符。
在C語言中也有‘\’的用法比如‘\n’是換行等等... ...
下面是C語言中轉義字符的一個收集表:
浮點型:單精度浮點型,雙精度浮點型,和長雙精度浮點型
浮點型的表示形式:十進制小數形式和指數形式。
十進制:123.123
指數形式:123e23
注意:指數形式表示e(E)前后必須有數字,並且e(E)后面必須是整數。
浮點型各類型占用的字節數大小:
在上面也有用sizeof測試字節數大小的例子,這里就不再敘述了。
浮點型在內存中存放的形式
與整型數據的存放形式不同,浮點型數據是按照指數形式存儲的。系統把一個浮點型數據分成小數部分和指數部分分別存儲,即符號位+小數部分+指數部分。
例如:float f = 123.456的存儲;
運算符
C語言中運算符有多種,算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符、條件運算符、逗號運算符、指針運算符、求字節數運算符、強制類型轉化運算符、分量運算符、下邊運算符等。我們這里介紹下逗號指針求字節運算符。
逗號運算符
在C語言中提供一種特殊的運算符--逗號運算符,它能將兩個表達式連接起來比如:
3+5,6+9
稱為逗號表達式,又稱為“順序求值運算符”。逗號表達式的一般形式為
表達式1,表達式2
求解過程是先求解表達式1,再依次求解表達式2,3。整個逗號表達式的值是最后一個表達式的輸出
比如:b=(a= 3*5,a*4);
最后的結果是60
main(){ int a; int b = (a=3*5,a*4); printf("%d",b); }
逗號不止是能作為運算符號也能作為分隔符號出現的,比如:
printf("%d %d",a,b)
指針運算符
*符號跟&符號
求字節運算符
作用:用來計算變量或者常量或者是一種數據類型占用的內存字節數。
基本形式:sizeof(變量名|常數|數據類型),完成之后返回一個整數值
表達式的形式跟Java基本一致