無符號數和有符號數之間賦值和大小比較


unsigned int a = -1;

printf("a = %d", a);

printf("a = %u", a);

int b = 3012345678;

printf("b = %d", b);

printf("b = %u", b);

輸出結果:

a = -1

a = 4294967295

b = -1282621618

b = 3012345678

說明:編繹器賦值時不管你是有符號還是無符號,它眼中只有一個32位的存儲空間。給負數就按補碼的形式存,給正數就按原碼的形式存。至於讀的時候,你是解讀為有符號還是無符號,隨便你。

---------------------------------------------------------------------------------------------

int d = -1;

unsigned int e = 9999;

if (d > e)

    puts("- 1 > 9999");           //邪惡的代碼

else

    puts("9999 > -1");            //正義的代碼

輸出結果:

-1 > 9999

說明:邪惡戰勝了正義,因為無符號和有符號兩個數比較時,會默認轉成無符號數,再進行比較。

-----------------------------------------------------------------------------------------------

C++小貼士:類的靜態函數可以被繼承,但不能被重寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM