【发布时间】:2010-11-08 23:56:04
【问题描述】:
我(基本上)在野外遇到过以下情况
x = x = 5;
显然在早期版本的 gcc 下编译干净(在 gcc 4.5.1 下生成警告)。据我所知,警告是由 -Wsequence-point 生成的。所以我的问题是这是否违反了标准中关于在序列点之间操作变量的措辞(即,它是根据规范未定义的行为)还是这是一个 gcc 误报(即,它是根据规范定义的行为)?序列点的措辞有点难以理解。
我之所以这么说主要是因为我实际上遇到的(用更大的表达方式)是
x[0][0] = x[0][0] = 5;
但我不认为这对警告很重要(如果这是重点,而不是我认为是问题的症结,请纠正我)。
【问题讨论】:
-
无论它是否违反标准中的措辞,它都是糟糕的代码。用火杀死它!让这样的表达式再也不会让你的代码变暗。
-
@abelenk 同意。这不是我的代码,我想在将其提交给 CCB 之前确定它是 UB。
标签: c++ gcc g++ gcc-warning