單精度型別(float)
雙精度型別(double)
4位元組(32位)
8位元組(64位)
實數提供7位有效數字
提供15~16位有效數字
實型常量:不分float型和double型,乙個實型常量可以賦給乙個float或double型變數,但變數根據其自身型別擷取實型常量中相應的有效數字。
儲存字元對應的ascll到記憶體單元中。字元型資料與整形資料之間可以通用,乙個字元能用字元的形式輸出,也能用整數的形式輸出。字元型資料進行算術運算,相當於對它的ascll進行運算。
char n;當同一表示式中各資料的型別不同時,編譯程式會自動把它們轉變成同一型別後再進行計算。n=『a』;
printf("%d",n);
轉換優先順序為charchar a;
a=『a』;
int b;
b=a;
printf("%d",b);
表現形式:(資料型別)(表示式);char n;int a=(int) n;
char a;按位與 「&」:若兩個相應的二進位制位都為1,則該位的結果為1,否則為0;a=『a』;
int b;
b=(int)a;
printf("%d",b);
如,13&1按位或 「|」:若兩個相應的二進位制位中有乙個為1,則該位的結果為1,否則為0;00001101
&00000001
00000001
如,13 | 1按位求反"~":0變1,1變0;00001101
|00000001
00001101
按位異或^:兩個二進位制位相同,為0,否則為1;
求反主要用於負數的補碼與原碼的轉換。
原碼,反碼,補碼。
計算機儲存主要用補碼,正數的反碼和補碼是其原碼,負數的補碼是其絕對值的反碼加一,負數的補碼轉換為原碼減一取反。
如, ~12左移"<<":將乙個數的二進位制位全部左移若干位,右邊便有空位,使空位補0;取反前: 00001100 (12) 原碼
取反後: 11110011 (-13) 反碼
11110100 (-12)補碼
再變回原碼,減一取反
00000011
00001100
如, 12<<2右移">>":將乙個數的二進位制位全部右移若干位,同左移相似,左邊便有空位,因為涉及到正負符號問題,負數時空位補1,正數時空位補0;左移前 : 00001100
左移後 : 00110000
如,-12>>210001100
11000110 (右移一位後)-6
11100011 (右移兩位後)-3
int a=-12,b,c;b=a>>1;
c=a>>2;
printf("%d\n%d",b,c);
-6其實,左移相當於模擬乘法,右移相當於模擬除法,每左移一位相當於乘2,左移n位,相當於乘2的n次方;右移同理。實際應用中適應於硬體的實現。-3
說明:位運算物件只能為整型或字元型資料,不能為實型資料。
c語言中,易錯知識點
1.結構體的計算 struct bbb p sizeof struct bbb 16 int main 2.結構體中結構體,共用體中結構體的大小 union aaahalf short kk number struct bbbhalf struct tagccc half long kk 結構體是個...
C語言知識點(一)
型別 是對資料的抽象 型別相同的資料有相同的表示形式 儲存格式以及相關的操作 程式中使用的所有資料都必定屬於某一種資料型別 資料型別的本質思考 思考資料型別和記憶體有關係嗎?c c 為什麼會引入資料型別?從編譯器的角度來考慮資料型別問題,才會發現它的本質。資料型別可理解為建立變數的模具 是固定記憶體...
C語言指標與陣列易混淆知識點(一)
指標 指標本身也是乙個變數,它的內容是指向的內容的位址。指標同樣有型別的區分,char 的指標只能指向char型資料,int 指標指向int型資料。但是指標所佔記憶體單元的大小 即其內容 是跟作業系統的位址位數有關,比如32位位址的系統,那麼指標所佔的記憶體單元就是4個位元組,16位就是2個位元組,...