C++为什么我的do-while循环在满足布尔条件时无法结束?

-1 c++ boolean indefinite do-while

我当前的项目要求使用do-while循环和单独的值生成函数的程序.该程序要求输入无限量的输入,直到输入的最后两个数字之间的差值大于12.代码可以工作,但只有当它看起来很明显时.有时它会识别bool已经立即遇到并终止,有时我可以输入15个以上的数字直到它结束,如果它甚至在第一个位置结束.如果可能的话,我想保持我的代码与我目前的相似.我知道我需要一个先决条件,因为第一个输入没有什么可比较的,我正试图弄清楚这一点.

到目前为止这是我的代码:

bool TwelveApart(int x, int y);

int main()
{
    int num1, num2;
    cout << "Enter some integers: " << endl;

    do
    {
        cin >> num1 >> num2;
        TwelveApart(num1, num2);
    } while (TwelveApart(num1, num2) == false);
    cout << "The difference between " << num1 << " and " << num2 << " is greater than or equal to 12." << endl;

    return 0;
}
bool TwelveApart(int x, int y)
{
    if (abs(x - y >= 12))
    {
        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

R S*_*ahu 5

有条件的

if (abs(x - y >= 12))
Run Code Online (Sandbox Code Playgroud)

设置不对.它需要是:

if (abs(x - y) >= 12 )
Run Code Online (Sandbox Code Playgroud)

FWIW,您可以简化功能:

bool TwelveApart(int x, int y)
{
   return (abs(x - y) >= 12 );
}
Run Code Online (Sandbox Code Playgroud)

此外,您TwelveApartdo-while循环中有一个冗余调用.那个电话没有做任何有用的事情.循环可以是:

do
{
    cin >> num1 >> num2;
} while (TwelveApart(num1, num2) == false);
Run Code Online (Sandbox Code Playgroud)