[英]Need help understanding what's going on in my while loop
我的程序執行得很好,但我對如何設置while
循環有疑問。
我知道true和false的布爾值分別是1和0,但是我不明白為什么我的輸出向后顯示偶數和奇數(據我所知,它是向后)。 簡單地說,我不明白為什么if ( number % 2 == 0 )
顯示數字是偶數,當我將其改為1時,它顯示為奇數。 我正在讀這行,如果(偶數等於假)。 我不知道那是不是我錯了。 閱讀這條線的正確方法是什么?
我設置代碼的方式現在正確顯示數字,我只是不明白為什么。 有人可以幫忙嗎?
// Program indefinitely displays an even
// or odd number until a negative number
// is entered.
#include <iostream>
using namespace std;
int main()
{
int number;
cout << "Please enter a number: ";
cin >> number;
while ( number >= 0 )
{
if ( number % 2 == 0 )
{
cout << number << " is even \n";
cout << "Please enter a number: ";
cin >> number;
}
else
{
cout << number << " is odd \n";
cout << "Please enter a number: ";
cin >> number;
}
}
cout << "Thank you. \n";
return 0;
}
number % 2
是0
,如果number
除以2
(即是偶數 ), 1
,如果number
是正的並且不划分2
(即為奇數 ),和-1
如果number
是負的並且不划分2
(即是奇數 )。 (最后一點必須是從C ++ 11開始的情況)。
因此,由於0 == 0
為true
,如果且僅當number
為偶數時 , number % 2 == 0
為true
。
所以你寫了if ( number % 2 == 0 )
來捕獲所有偶數情況,而else
陷入奇怪的情況。
測試if ( number % 2 == 1 )
僅適用於正奇怪的測試,但舊C ++標准允許這是true
陰性number
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.