Recap不一定对所有人都是好事# EB23 - 劳工卡
i*1
1 楼
#include
int main(void)
{
int i = 0;
char a[3] = {0,0,0};
a[++i] = i++;
return 0;
}
运行完后各个值分别是多少?
i
a[0]
a[1]
a[2]
i 肯定是2。
a[++i] = i++这句:
先右边i++:i的值0作为表达式的值赋给左边,然后i自增1,i的值为1
再左边a[++i]:i自增1,i的值为2,i的值2作为表达式的值,所以应该是给a[2]赋值。
所以这句话的意思应该是a[2] = 0。
最后a[0, 1, 2]全部是0。
但是我做visual studio里试了,a[0] = a[2] = 0, a[1] = 1。
这是怎么回事?
int main(void)
{
int i = 0;
char a[3] = {0,0,0};
a[++i] = i++;
return 0;
}
运行完后各个值分别是多少?
i
a[0]
a[1]
a[2]
i 肯定是2。
a[++i] = i++这句:
先右边i++:i的值0作为表达式的值赋给左边,然后i自增1,i的值为1
再左边a[++i]:i自增1,i的值为2,i的值2作为表达式的值,所以应该是给a[2]赋值。
所以这句话的意思应该是a[2] = 0。
最后a[0, 1, 2]全部是0。
但是我做visual studio里试了,a[0] = a[2] = 0, a[1] = 1。
这是怎么回事?