【发布时间】:2013-07-08 21:33:25
【问题描述】:
我有这个代码:
#include<stdio.h>
main()
{
static int a[10];
int i=5;
a[i]=i++;// **statement 1**
printf("%d %d",a[6],a[5]);
}
我得到以下输出:
0 5
既然赋值运算符是 RTL,难道i++;in statement 1 不应该增加,然后 a[i] 在赋值之前实际上变成 a[6] 吗?
语句 1 的计算结果不是a[6]=5;吗?
为什么 a[5] 变成了 5?
【问题讨论】:
-
最好避开这段代码。
-
天哪,我喜欢这个网站。不到5分钟,反应惊人。就问题而言,我不知道“未定义的行为”现在会进行研究。非常感谢:)
-
@DanielFischer 这个案例不是 UB。
标签: c operators assignment-operator