相关疑难解决方法(0)

未定义的行为和序列点

什么是"序列点"?

未定义的行为和序列点之间的关系是什么?

我经常使用有趣和复杂的表达方式a[++i] = i;,让自己感觉更好.我为什么要停止使用它们?

如果您已阅读此内容,请务必访问后续问题重新加载未定义的行为和序列点.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ c++-faq undefined-behavior sequence-points

970
推荐指数
4
解决办法
10万
查看次数

153
推荐指数
5
解决办法
3万
查看次数

C/C++:如何使用do-while(0); 构造没有编译器警告,如C4127?

由于本答案中描述的原因,我经常在我的#defines中使用do-while(0)构造.此外,我正在尝试使用尽可能高的编译器警告级别来捕获更多潜在问题,并使我的代码更加健壮和跨平台.所以我通常使用-Wallgcc和/WallMSVC.

不幸的是,MSVC抱怨do-while(0)构造:

foo.c(36) : warning C4127: conditional expression is constant
Run Code Online (Sandbox Code Playgroud)

我应该怎么做这个警告?

只是为所有文件全局禁用它?对我来说这似乎不是一个好主意.

c c++ macros compiler-warnings visual-c++

44
推荐指数
5
解决办法
1万
查看次数

在while循环条件c ++中有什么用"?"?

string command;
string bookName;
while (cin >> command, command != "END")
{...}
Run Code Online (Sandbox Code Playgroud)

在while循环的条件中,有一个逗号.我知道可以使用&&或添加多个条件||.

但为什么要使用,

有什么好处吗?你能解释一下使用方法和语法吗?

c++ while-loop

4
推荐指数
1
解决办法
246
查看次数