Re: [問題] 一個困惑的小問題
※ 引述《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
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章