1

所以我首先#define SENTINEL -1

在某个函数中,我设置了一个 if 语句

void blahblah(blah)
{
   printf("Enter an integer (-1 to quit)");
   scanf("%d", &value);
   if (value == SENTINEL)
     return;
}

但由于某种原因,它没有像我想要的那样终止程序?

4

4 回答 4

1

return 并不意味着退出,它只是意味着从函数返回......在你的代码中,if 语句是无用的,因为如果 if 语句为 false,函数无论如何都会返回。

您可能想从 blahbalh 返回一个值来表示退出。

于 2013-02-11T23:45:08.700 回答
0

如果您希望终止整个程序,请替换returnexit(0);. 另外,请确保valueisint和 not的数据类型unsigned int

于 2013-02-11T23:45:35.773 回答
0

正常的方法是设置一个标志来导致返回;在 main() - 但您可以使用 exit() 立即从代码的任何部分中止程序。

请注意,如果您使用 exit() 程序将在那里结束并且您不会获得任何您可能想要运行的终止/清理代码。

再次编辑,用错误的语言思考!exit() 需要一个表示返回状态的 int 参数,EXIT_SUCCESS 或 EXIT_FAILURE

我的错!

于 2013-02-11T23:46:03.043 回答
0

程序没有理由终止,您只是在 value == SENTINEL 时离开(返回)一个函数。

你的功能也有三个问题;如果 value != SENTINEL 那么您不会返回未定义行为的函数;参数 blah 缺少类型(int blah);并且 value 应该是全局的,该功能才能正常工作。

于 2013-02-11T23:48:19.313 回答