代码:
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循环中的语法问题。
答案 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)
却不成立。