c++ - 需要帮助了解我的 while 循环中发生了什么

标签 c++ while-loop

我的程序执行得很好,但我对如何设置 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 % 20 如果 number 整除 2(即是偶数), 1 如果 number正数 并且不整除 2(即 奇数), -1 如果 number负数 且不整除 2(即 奇怪的)。 (最后一点必须是从 C++11 开始的情况)。

因此,由于 0 == 0truenumber % 2 == 0true 如果,且仅当 number偶数

所以您编写了 if ( number % 2 == 0 ) 来捕获所有偶数情况,而 else 捕获奇数情况。

测试 if ( number % 2 == 1 ) 只是对正奇数的测试,但旧的 C++ 标准允许对负 number 为 true

关于c++ - 需要帮助了解我的 while 循环中发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39632340/

相关文章:

c++ - DuplicateHandle 的代价

c++ - 初始化时不会调用任何复制/move 构造函数/赋值

c++ - 部分特化模板内的方法指针

java - 比较方法和数组

c++ - 使用 .get() 一次读取一个字节

c++ - 如何防止用继承的运算符[]赋值?

C++ 字符数组给出奇怪的输出

java - 在 Java 的 While 循环中检查字符串的快捷方式?

Bash 循环遍历文件过早结束

bash - Bash 中单行 while 循环的语法