【发布时间】:2011-03-19 13:15:22
【问题描述】:
我有这个问题,我之前考虑过,但认为这不是微不足道的回答
int x = x + 1;
int main() {
return x;
}
我的问题是程序的行为是已定义还是未定义,如果它完全有效。如果已定义,x 的值是否在 main 中已知?
【问题讨论】:
-
有趣。至少 GCC 给出 1,即使是
-std=c++98 -pedantic。 -
用 MSVC9 (15.00.30729.01) 编译得到 1。
-
序列点浮现在脑海中en.wikipedia.org/wiki/Sequence_point
-
为什么有人会写这样的代码?如果有的话,这可能/会混淆您正在使用的静态分析器。我会认为行为未定义,即使许多编译器给出一致的结果 x=1。
-
@Schedler 我建议不要使用此类代码。这纯粹是一个测验,我没有任何实际背景。 :)
标签: c++ initialization initialization-order