關於資料型別的相關轉換,我們可以總結出三種情況。下面我們就來詳細的說一下具體情況和相關例題吧~
說到資料型別轉換我們首先要說說相關資料型別。
double 8位元組
longlong 8位元組
float 4位元組
long 4位元組
int 4位元組
short 2位元組
char 1位元組
以上型別從上往下資料型別寬度變窄
預設情況下資料由窄型別轉寬型別,左邊補符號位,無符號左邊補0!
例題1:
有符號的-1 1111 1111 ——————> 1111 1111 1111 1111 1111 1111 1111 1111
無符號的255 1111 1111 ——————> 0000 0000 0000 0000 0000 0000 1111 1111
例題2:
請問程式輸出的是什麼?
char a = 0x76;
printf("%x\n", a<<8 | 0x12);
求解:輸出7612
因為0x表示16進製制,所以資料型別預設的由char窄型別轉換為int的寬型別,始終注意!!int型別時4位元組不是1位元組所以a<<8不是0是7600。7600 | 12 其結果就為0x7612.
例題講解:
請問程式輸出的是什麼?
int main()
求解:輸出 78,-24,-24;20,00 00 00 00 00 00 00 14,ff ff ff ff ff ff ff 14
分析原因:
注意:
%x 和 %08x 的區別在於前面是補充1還是f
例題講解:
#include>
int main()
輸出結果為:-59,-1,-1,197,255,255
分析:
char a = 197; //1100 0101(負數) --->-59
char b = 255; //1111 1111(負數) --->-1
char c = -1; //1111 1111(負數) --->-1
無符號的數所有位數表示數值
unsigned char e = 197;
unsigned char f = 255;
unsigned char g = -1
例題:
#includeint main()
(1)執行時會輸出什麼資訊?
(2)如果將程式第4.5行改為c1 = 197;c2=198;執行時會輸出什麼資訊?
(3)如果將程式第三行改為int c1,c2;執行時會輸出什麼資訊?為什麼?
求解:
(1)
a,b97,98
(2)?,?
-59,-58
1100 0101(負數,因為char型別只有乙個位元組,最高位表示符號位) = -59
1100 1010(負數) = -58
(3)?,?
197,198
1100 0101(正數,因為int型別有四個位元組,這裡的最高位不表示符號位) = 197
1100 1010(正數) =198
c語言型別轉換
c語言型別轉換 自動型別轉換 預設型別轉換,隱式轉換,編譯器幫你完成 和 強制型別轉換 自己轉成自己想要的型別 自動型別轉換最常見的有 混合運算 賦值運算 和函式值的型別轉換 賦值運算 就是把 右邊的表示式的型別 轉換成 左邊 的表示式的型別。混合運算 指在乙個表示式中參與運算的物件不是同一種資料型...
C語言型別轉換
一 在算數表示式中,低型別轉換為高型別 signed char a 0xe0 unsigned int b a unsigned char c a 同等位數的型別進行賦值時,不會改變在其記憶體的儲存形式,所以第三行語句 c 的位儲存形式還是0xe0 位擴充套件 當 a 和 c 進行比較的時候,由於兩...
C語言 型別轉換
目錄 自動型別轉換 1.整形 2.浮點型 3.賦值 強制型別轉換 乙個表示式 現不同型別間的混合運算,較低的型別會自動向較高的型別轉換。一般情況下,資料表示的範圍越大,精度越高,級別越高。運算過後,型別保留,高位丟棄,只取 型別位元組大小的 低位。自動型別轉換順序 signed char unsig...