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

时间:2016-09-22 07:02:07

标签: c++ 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;
}

1 个答案:

答案 0 :(得分:0)

number % 2 0如果number2(即甚至),1 number 2正面并且不会除-1(即奇数),number如果2 为负并且不会除0 == 0(即奇数)。 (最后一点必须是从C ++ 11开始的情况)。

因此,由于truenumber % 2 == 0truenumber当且仅当if ( number % 2 == 0 ) 甚至时才会{。}}。

所以你写了else来记录所有偶数情况,而if ( number % 2 == 1 )陷阱奇怪的情况。

测试true只是对积极奇怪的测试,但较旧的C ++标准允许number为负picturePath