Re: [問題] 一個困惑的小問題

看板C_and_CPP (C/C++)作者 (d.p.II)時間16年前 (2009/12/14 20:52), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《lgs ()》之銘言: : 在 Dev C++ 4.9.9.2 版下 : void main(void) : { : unsigned char var = 255; : if (~var) ~的operand要做integer promotion 所以相當於~(int(var)) 而根據integer promotion的規則,int可以容納下255這個數字,故相當於 ~(255),結果就很明顯了 : { : var = ~var; var = ~(255),結果被截斷了,因為var是unsigned char類型 故截斷時僅保留後8位(如果非unsigned,則結果未定義) ~var的後8位都是0。 : printf("value = %d",var); 在這裡,0做了一次提升,結果還是0. : } : system("pause"); : } : why 印出的是 0 可是 if 判斷會進去執行 @ @ : void main(void) : { : unsigned char var = 255; : if ( (var=0) ) : { : printf("value = %d\n",var); : } : system("pause"); : } : 不會進去if判斷式,不過get運算的return value 不是應該要為true嗎 @ @ : 先感謝好心人的回答 ~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.235.248.82
文章代碼(AID): #1B9ZK9_6 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1B9ZK9_6 (C_and_CPP)