[問題] 關於 unsigned int 跟 int 運算

看板C_and_CPP (C/C++)作者 (ㄜㄜ <(‵︶′)>)時間13年前 (2012/12/19 21:21), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
剛剛遇到一個問題 部分程式碼如下 unsigned int a = 6, c; int b = -20; printf ("The value is positive? %c\n", ((a + b) > 0 ? 'Y' : 'N')); c = a + b; printf ("The value is: %d\n", c); 輸出結果是 The value is positive? Y The value is: -14 我對於綠色那邊會輸出 Y 非常好奇 但找不到一個合理的解釋來說服自己 雖然感覺很簡單 但希望版友能幫忙解答 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.134.19 ※ 編輯: Leavesb 來自: 118.169.134.19 (12/19 21:21)

12/19 21:50, , 1F
b會先轉成unsigned int (usual arithmetic conversion)
12/19 21:50, 1F

12/19 21:50, , 2F
變成"-6 + UINT_MAX + 1" 然後和a相加 (結果還是unsigned)
12/19 21:50, 2F

12/19 21:51, , 3F
另外 %d 是 signed int 的輸出結果
12/19 21:51, 3F

12/19 21:51, , 4F
要輸出 unsigned int 用 %u
12/19 21:51, 4F

12/19 21:51, , 5F
加完以後再看看結果是不是0
12/19 21:51, 5F

12/20 00:07, , 6F
http://goo.gl/PShnd 裡面有提到.
12/20 00:07, 6F

12/20 13:13, , 7F
謝謝上面三位版友 樓上連結裡的題目就是我遇到的問題
12/20 13:13, 7F
文章代碼(AID): #1GqRz4ID (C_and_CPP)
文章代碼(AID): #1GqRz4ID (C_and_CPP)