關於unsigned 的算術轉換

2022-07-15 05:27:09 字數 442 閱讀 9723

#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...