奇怪的行爲,我對計算機科學的教學助理和我的一個學生提出以下的代碼來檢查一個整數是否是奇數還是偶數:檢查一個數字是否在C++中是奇數。代碼
int is_odd (int i) {
if((i % 2 == 1) && (i % 2 == -1));
else;
}
令人驚訝的(至少對我來說)這個代碼提供正確的結果。我測試了高達100000000的數字,並且我實在無法解釋爲什麼這個代碼的行爲與它一樣。
我們正在使用gcc V6.2.1和C++
我知道,這是不是這麼一個典型的問題,但我希望能找到一些幫助。
給出正確結果?該函數應該返回一個int,但不返回任何內容。它的行爲是不確定的。你如何確定結果是「正確的」? – StoryTeller
當你實際修復它時,它根本不正確。 http://ideone.com/5bs2aF – StoryTeller
行爲未定義。看看[這裏](http://melpon.org/wandbox/permlink/HbRsBuRh5fAnBA0U)。我們可以構建一個關於'mod'的論據或者在'eax'中相應地留下'0'或'1'的東西,但是它很脆弱 – krzaq