C++;-函数始终返回true < >我的C++函数总是返回true。总是。即使我将返回值更改为“false”,它仍然返回true。我会笑,但我已经有点过去了,到了一个对我来说毫无意义的阶段

C++;-函数始终返回true < >我的C++函数总是返回true。总是。即使我将返回值更改为“false”,它仍然返回true。我会笑,但我已经有点过去了,到了一个对我来说毫无意义的阶段,c++,C++,(如果有人感兴趣,代码为) #包括 #包括 bool-getCellStates(bool-cells[16][16],int-i,int-j) { int-alive=0; 布尔·伊萨利夫; 如果(单元格[i][j-1]&&j-1>=0) live++; if(单元格[i+1][j-1]&&i+1=0) live++; if(cells[i+1][j]&&i+1问题不在函数内部,而是在调用位置(就调用位置而言)。使用括号调用函数,而不是括号 cells[i][j] = getCellState

(如果有人感兴趣,代码为)

#包括
#包括
bool-getCellStates(bool-cells[16][16],int-i,int-j)
{
int-alive=0;
布尔·伊萨利夫;
如果(单元格[i][j-1]&&j-1>=0)
live++;
if(单元格[i+1][j-1]&&i+1=0)
live++;

if(cells[i+1][j]&&i+1问题不在函数内部,而是在调用位置(就调用位置而言)。使用括号调用函数,而不是括号

cells[i][j] = getCellStates(cells, i, j);
您正在将函数指针转换为布尔值,它确实总是
true
。函数指针的订阅是一种非标准扩展,因此启用编译器警告和迂腐来防止此类错误。对于GCC和clang,我建议使用以下标志:

-Wall -Wextra -Werror -pedantic

问题不在函数内部,而是在调用位置(就调用位置而言)。使用括号而不是括号调用函数

cells[i][j] = getCellStates(cells, i, j);
您正在将函数指针转换为布尔值,它确实总是
true
。函数指针的订阅是一种非标准扩展,因此启用编译器警告和迂腐来防止此类错误。对于GCC和clang,我建议使用以下标志:

-Wall -Wextra -Werror -pedantic

这行代码是否编译?
cells[i][j]=getCellStates[cells,i,j];
如果你一开始就尝试使用调试器,你就不需要发布这个问题(因为你会看到你的函数从未被调用过……尽管你可能不得不发布不同的问题来询问为什么会这样)。请不要使用stackoverflow作为你的第一道防线。我很抱歉,这只是我的调试器有点狡猾…我还在学习如何使用它。也不要光顾我-我知道在调查它之前不要只问一个问题。我讨厌傲慢的人认为其他人都很愚蠢。而且,是的,它会编译。这一行是真的吗en compile?
cells[i][j]=getCellStates[cells,i,j];
如果您一开始就尝试使用调试器,您就不需要发布此问题(因为您会看到您的函数从未被调用过……尽管您可能不得不发布不同的问题来询问原因)。请不要使用stackoverflow作为您的第一道防线。我很抱歉,这只是我的调试器有点狡猾…我还在学习如何使用它。也不要光顾我-我知道在调查它之前不要只问一个问题。我讨厌傲慢的人认为其他人都很愚蠢。而且,是的,它会编译。另一个问题的受害者一些疯狂的非标准GCC扩展。显然GCC允许在函数指针上使用指针算法…荒谬。谢谢你的回答。虽然我不知道你的评论是什么意思,但AndreyT我使用的是GCC,所以…我责怪编译器;)一些非标准GCC扩展的另一个受害者。显然GCC允许函数指针上的指针运算…荒谬。谢谢你的回答。虽然我不知道你的评论是什么意思,但AndreyT我使用的是GCC,所以…我责怪编译器;)