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