#include
int main()
else
if(i < j)
else
return 0;
}vs2010輸出結果如下:
0 0
-1 < 1
1 < -1
因為在執行算術運算時,運算元的型別如果不同,就會發生轉換。
1.浮點型別朝著精度更高,長度更長的方向轉換,如float轉換為double
2.整型數如果轉換為signed不丟失資訊,就轉換為signed,否則轉換為unsigned。但在k&r c採用了無符號保留原則,即只要是無符號與有符號混合使用,結果就是無符號型別。
3.在signed int 和 unsigned int 之間做測試相等性,signed int 自動公升級為unsigned int型別,所最後會出現1 < -1的情況
關於unsigned與signed的轉換問題
1.無論int是unsigned還是signed,如果int轉化為char,均擷取最低8位作為char的值。2.例如 1 如果char為signed char c int i 193 c i printf d n c 輸出 63,因為 63為193的補 過程 因為計算機儲存的是數的補碼所以 193的...
unsigned和signed間的轉換
1 include int main int argc,char argv 結果 65535 1 在計算機中,負數是以補碼來儲存的。html c語言中常量整數 1的補碼表示為0xffffffff。擷取後面16位ffff賦值給 變數a unsigned short 此時 a 0xffff a沒有符號位...
C語言 算術轉換。
如果某個操作符的各個運算元屬於不同的型別,那麼除非其中乙個運算元的轉換為另乙個運算元的類 型,否則操作就無法進行。下面的層次體系稱為尋常算術轉換。printf u n sizeof long double 列印8 printf u n sizeof double 8 printf u n sizeo...