C 语言中潜在的未定义行为

  • 本文关键字:未定义 语言 c
  • 更新时间 :
  • 英文 :


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

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

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

它是未定义的。参考N1256,C99草案,子条款6.5/2(强调我的):

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

最新更新