接上。。。 如 main() { int i =0,a; a = (i++)*i+6*(4*(i--))+6; printf("%d,%d\n",a,i); } 最后输出为a=6;i=0; 那么是不是说i--是用后自减。++i是用后自增,--i是用后自减呢? 请高手指点。
说错了。 那么是不是说i--是用后自减。++i是自增后用,--i是自减后用呢? 请高手指点。
引用 9 楼 zhao4zhong1 的回复:引用 8 楼 yxs650203 的回复:LZ的意思好像是问i++为什么没有加上去,大家好像答非所问 无汇编,无真相。 汇编还不会啊。并且我用的是vs2010,看内存和寄存器的变化也不会。 我看这种情况我还是先记忆一下吧。
i++为用后自增,不影响本次计算。赋值循环中,每次把i赋值给a[i]然后i自增,然后进入下一次赋值,直到i=9时,弄完a[9]=9时,i继续自增到10,for判断失败跳出循环。至此完成a[0]~a[9]的赋值。所以结果本来就是9876543210。 a[i++]=i; 完全等效于: a[i]=i; i++; 楼主的写法对于编译器应该不存在歧义,因为应该所有正……
main() { int i,a[10]; for(i=0;i<=9;) { a[i++]=i;// 改:a[i] = ++i;你可以试下 } for(i=9;i>=0;i--) { printf("%d",a[i]); } }
69,373
社区成员
243,080
社区内容
加载中
试试用AI创作助手写篇文章吧