所以我首先#define SENTINEL -1
在某个函数中,我设置了一个 if 语句
void blahblah(blah)
{
printf("Enter an integer (-1 to quit)");
scanf("%d", &value);
if (value == SENTINEL)
return;
}
但由于某种原因,它没有像我想要的那样终止程序?
return 并不意味着退出,它只是意味着从函数返回......在你的代码中,if 语句是无用的,因为如果 if 语句为 false,函数无论如何都会返回。
您可能想从 blahbalh 返回一个值来表示退出。
如果您希望终止整个程序,请替换return
为exit(0);
. 另外,请确保value
isint
和 not的数据类型unsigned int
。
正常的方法是设置一个标志来导致返回;在 main() - 但您可以使用 exit() 立即从代码的任何部分中止程序。
请注意,如果您使用 exit() 程序将在那里结束并且您不会获得任何您可能想要运行的终止/清理代码。
再次编辑,用错误的语言思考!exit() 需要一个表示返回状态的 int 参数,EXIT_SUCCESS 或 EXIT_FAILURE
我的错!
程序没有理由终止,您只是在 value == SENTINEL 时离开(返回)一个函数。
你的功能也有三个问题;如果 value != SENTINEL 那么您不会返回未定义行为的函数;参数 blah 缺少类型(int blah);并且 value 应该是全局的,该功能才能正常工作。