问题描述:
代码如下:
#include<stdio.h>
void main()
{
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
结果为:9 8 8 9 -8 -9 请问为什么最后一步会等于-9。麻烦一步步的讲解下,初学者。谢谢!!!
是不是应该这样理解,负号并不参与到i值的自增自减运算中,只是在运算完成后在前面加上负号而已。如果这样理解,我能明白为什么得这个结果了。。。
是这样的吗??
问题解答:
i++,是程序先显示后执行运算;
而++i是先执行运算再显示出来
int i=8;变量会随着程序运行变化的。
第一句printf("%d\n",++i); 执行后,i就成为8+1=9;
第二句printf("%d\n",--i); 这时自减,9-1=8;
第三句printf("%d\n",i++);这个加号在后面不同上面的,是先输出i的数字,然后程序再加1;所以程序显示的是8;但接着i的值就变成8+1=9了。
第四句,printf("%d\n",i--);同理,先显示出i=9(因为上一步以及是9);显示了之后程序做自减9-1=8;
第五句,因为第四句执行完后结果是8,所以-8++是-8;但程序过后值就是-9,所以下一句就是-9.但结束后i则变为9-1=8。符号是最后才加上的,不参与运算
希望可以帮到你
-i++之后i=9
-i--输出-i的初始值即-9
你的问题补充是对的!
自增自减运算的优先级比较高,所以最后一步先执行之前,i=9,所以最后一步等于-9,此时i=8
最后一步是-i--,先执行的是i--,i的值不变是9,然后加上“-”号,所以是-9
i--是先把i的值赋给左边,然后做自减,所以赋过去的值并没有减1
你的理解是正确的
就像你所说的负号并不参与到i值的自增自减运算中,只是在运算完成后在前面加上负号而已