我有这段代码:
#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,因此语句1 中的i++;
不应增加,然后在赋值之前a [i]实际变为[6]吗?
声明1 不评估为a[6]=5;
?
为什么[5]成为5?
答案 0 :(得分:1)
答案 1 :(得分:0)
根据语言规范,这是一种未定义的行为;)
答案 2 :(得分:0)
您正尝试在同一sequence point中(即同时)访问和修改相同的变量。这是一种未定义的行为。
结帐this question了解详情。