C中潜在的未定义行为

时间:2015-01-19 20:27:05

标签: c

我需要知道以下代码是否可能是未定义的行为(我很确定它是):

int main(){
   int z=53;
   z=z<<=3;
   return 0;
}

这是课堂测试中的一个问题。我告诉老师我以为是UB,但我老师不相信我。

1 个答案:

答案 0 :(得分:6)

它未定义。致N1256,C99草案,第6.5 / 2条(强调我的):

  

在上一个和下一个序列点之间,一个对象的存储值最多只能通过表达式的一次修改 。 72)此外,先前值应只读   确定要存储的值。 73)