如何使用布尔(C ++)退出while循环

时间:2018-07-31 03:04:37

标签: c++

代码:

while (CheckPalindrome == false)
{
    cout << "hi";
    i = number;
    r = RevNum(i);
    adds++;
    CheckPalindrome(i);
}
bool CheckPalindrome(int i)
{
    bool Check = false;
    if (i == rev)
    {
        Check = true;
    }
    return Check;
}

由于某种原因,它只是跳过了while循环。我不确定这是布尔值问题还是while循环中的语法问题。

2 个答案:

答案 0 :(得分:2)

CheckPalindrome是一个函数。就其本身而言,函数的名称就是该函数的地址。由于这是指针类型,因此将其评估为if / while的条件等同于将其与空指针进行比较,因此您的while循环基本上与以下内容相同:

while (checkPalindrome == nullptr)

在执行循环时,checkPalindrome的地址不会改变,因此只能执行以下两种操作之一:checkPalindrome的地址等于空值指针 1 ,并且该循环根本不会执行,否则它会与不等于空指针的状态进行比较,从而得到无限循环。


1.可能有争论的余地,这应该永远不会发生/真的不允许,但是即使这样做,也不会有任何帮助。

答案 1 :(得分:1)

为了测试Check Palindrome函数的布尔响应,您必须实际调用该函数。

代替

while(CheckPalindrome == false)

将其更改为

while(CheckPalindrome(someVariable) == false)

,然后您可以在函数中修改someVariable

但是,当然,由于您的函数返回布尔值,因此正确的语法是编写:

while ( !CheckPalindrome(someVariable) )

如果没有前导!,它将是while (true)!使之成为真名,while (false)却不成立。