作者 主題: g++ 無號整數的問題  (閱讀 3183 次)

0 會員 與 1 訪客 正在閱讀本文。

sunrise

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
g++ 無號整數的問題
« 於: 2010-04-10 23:13 »
 unsigned ui = 4294967295;
          :
          :
 if (ui == 4294967295)
   printf("ui == 4294967295\n");
 else
   printf("ui != 4294967295\n");

 if (ui == -1)
   printf("ui == -1\n");
 else
   printf("ui != -1\n");

g++ 4.3.2-2編譯
 warning: this decimal constant is unsigned only in ISO C90

執行
ui == 4294967295
ui == -1

這樣好像不對耶

有人能解說 一下嗎

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: g++ 無號整數的問題
« 回覆 #1 於: 2010-04-11 17:43 »

若你要用 unsigned 來表示 -1,的確就是 4294967295 呢,有啥問題嘛?

詳見 10 進位補數的觀念。
I am kenduest - 小州

my website: http://kenduest.sayya.org/

sunrise

  • 可愛的小學生
  • *
  • 文章數: 5
    • 檢視個人資料
回覆: g++ 無號整數的問題
« 回覆 #2 於: 2010-04-12 15:54 »
主要是擔心 用usigned 宣告時
程式無法判斷正負數