我(基本上)在野外遇到过以下情况
x = x = 5;
这显然在早期版本的 gcc 下编译干净(在 gcc 4.5.1 下生成警告)。据我所知,警告是由 -Wsequence-point 生成的。所以我的问题是这是否违反了标准中关于在序列点之间操作变量的措辞(即,它是根据规范未定义的行为)或者这是一个 gcc 误报(即,它是根据规范定义的行为)?关于序列点的措辞有点难以理解。
我说主要是因为我实际遇到的(用更大的表达方式)是
x[0][0] = x[0][0] = 5;
但我认为这对警告并不重要(如果这是重点,而不是我认为的问题的症结,请纠正我)。