我的程序执行得很好,但我对如何设置 while
循环有疑问。
我知道 true 和 false 的 bool 值分别是 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 % 2 == 0
是 true
如果,且仅当 number
为偶数。
所以您编写了 if ( number % 2 == 0 )
来捕获所有偶数情况,而 else
捕获奇数情况。
测试 if ( number % 2 == 1 )
只是对正奇数的测试,但旧的 C++ 标准允许对负 number 为
。true
关于c++ - 需要帮助了解我的 while 循环中发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39632340/