我認爲這是一個簡單的問題,但我正在努力與以下。例如,在我有下面的語句(語言爲C):如果語句整數
int foobar
if (foobar)
{
// do something.
}
現在,如果我對這個正確的,當foobar的不是零這個說法是正確的。所以它應該與if(foobar!= 0)相同;
但是,如果foobar變成負數會發生什麼?
我認爲這是一個簡單的問題,但我正在努力與以下。例如,在我有下面的語句(語言爲C):如果語句整數
int foobar
if (foobar)
{
// do something.
}
現在,如果我對這個正確的,當foobar的不是零這個說法是正確的。所以它應該與if(foobar!= 0)相同;
但是,如果foobar變成負數會發生什麼?
負面或正面。任何非0是在if
另外一個真值,考慮一個負數:-1
在C -1內部被表示爲:0xFFFFFFFF
,在這種情況下,這將是如果一個正數我將它轉換爲無符號整數。
但是在C99標準編譯器出現後,我建議你用 <stdbool.h>
來代替。使得猜測工作少了很多:
一樣,
if (foobar)
意味着foobar的不是零因此無論是正面或負面沒關係,但它仍然是不爲零
如果foobar是一個負數(它仍然不是零),那麼你的語句應該返回true,但是你應該避免這樣的測試,因爲測試那些可能具有不同「真」值的變量不是最佳實踐。
這正是我想要避免的,它進入了一個未知的狀態。我在別人的程序中看到了這行代碼,然後它打了我。爲什麼使用這個語句而不是if(foobar!= 0);現在我明白了。非常感謝我的問題! –
負數的表示是實現定義的。這個問題並不重要,只有*值*很重要,不管它是如何表示的。在這種情況下,'int'不會被轉換爲'unsigned int'。 –