【发布时间】:2014-10-16 20:43:29
【问题描述】:
我有这样的表达方式:
B[i]=B[++i]*i;
在 C 中这是未定义的?
首先会发生什么?先计算赋值符号的右边,还是左边?
【问题讨论】:
-
未定义。如果你不明白这意味着什么,你为什么要编写这样的代码?
-
@BillLynch 是来自测试的问题......他们询问程序的输出是什么,并且代码具有该表达式。对我来说是不确定会发生什么,我可以我是对的,谢谢...
-
所以,测试要么期望 UB 作为答案,要么就是垃圾。我给后者十比一的赔率。
-
@exsnake - 唯一的答案是“是的,它是未定义的。”
-
也有点相关:Assignment operator sequencing in C11 expressions ...我在回答中引用的缺陷报告为评估这些类型的构造提供了一个很好的框架。如果你能理解这个证明,它将帮助你理解很多这样的案例。
标签: c