x=i++相当于:
int temp;
temp = i;
i=i+1;
x=temp;
所以,
i=0;
i=i++;==>
temp=0;
i=1;
i=temp; ==> i=0;and
a=i++; ==>
temp = 0;
i=1;
a=temp; ==> a = 0;
int temp;
temp = i;
i=i+1;
x=temp;
所以,
i=0;
i=i++;==>
temp=0;
i=1;
i=temp; ==> i=0;and
a=i++; ==>
temp = 0;
i=1;
a=temp; ==> a = 0;
其实关于i++,所有的书都说得很清楚啊……
i++以后,i=1,但i++这个表达式的值仍然是0啊……
所以i=i++,i仍然是0……
如果i=0,i++加一的效果哪里去了
i++在=运算时先把i=0;然后加一,
那么i好象该是1了,i只有一个地址
temp=i++就不同了,这里temp就是0
temp = i++;
i = temp;
这两个语句同样效果的简写, i++ 的效果为什么一定要存在呢?
i=i++这句先执行=
所以i=0;
然后执行i++
所以i=1
luodi请指点
在Java/C/C++ 以及任何一种有 ++ 这个运算符的语言中, ++ 这个运算符都比 = 这个运算符优先级高,所以一定会先执行 ++, 记住, = 没什么特别之处,只是一个运算符!
i++,和++i的区别在于,前者是先取i值,在进行++,后者是先++在取i值,=是没什么特别的
但++是特别的
单独用的话i++,和++i没区别
但在表达式里面的话就要小心了
int i=0;
int man[2];
man[printf("%d\n",i)]=(i++)+(i++)+(i++)+(i++)+(i++);
得到0
说明i++在赋值语句后计算,而不是表达式后计算