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

看板C_and_CPP (C/C++)作者時間16年前 (2009/12/14 20:08), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/2 (看更多)
在 Dev C++ 4.9.9.2 版下 void main(void) { unsigned char var = 255; if (~var) { var = ~var; printf("value = %d",var); } 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: 59.124.186.194

12/14 20:12, , 1F
var值為零 所以false呀 我猜你要打var==0
12/14 20:12, 1F

12/14 20:13, , 2F
sorry我眼殘
12/14 20:13, 2F

12/14 20:19, , 3F
if ((unsigned char)(~var)) 這樣就可以了
12/14 20:19, 3F

12/14 20:20, , 4F
因為如果是int的話 (~var)是-256
12/14 20:20, 4F

12/14 20:29, , 5F
原來是被偷偷轉型了 @ @  那第二題是因compiler作法而異囉??
12/14 20:29, 5F

12/14 20:48, , 6F
第二段你寫if(var=0), 最後留在if()裡判斷的是0, 結果肯
12/14 20:48, 6F

12/14 20:48, , 7F
定是false的, 不會因為compiler作法而異吧....@_@"
12/14 20:48, 7F
文章代碼(AID): #1B9Ygp7Z (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1B9Ygp7Z (C_and_CPP)