自加,自减问题
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--);
getch();
}
这段代码编译出来的结果是:9,8,8,9,-8,-9
和我想的不一样,从第三个开始就算不对了,应该是怎么算的.大家给我讲一下
----------------解决方案--------------------------------------------------------
++i - -i i++ i-- -i++ -i--
i值 9 8 9 8 9 8
输出 9 8 8 9 -8 -9
先加再输出 先减再输出 先输出再加 先输出再减
----------------解决方案--------------------------------------------------------
如果你是想得到这样的结果的话:9,7,8,8,-8,-8。
可以在每个输出语句的前面加个int i=8,给他重新赋值。
----------------解决方案--------------------------------------------------------
到C的初学者乐园来吧 QQ群:42675698
----------------解决方案--------------------------------------------------------
i=8
-i++的结果为什么是9呀
----------------解决方案--------------------------------------------------------
(1)++ 作用在变量左边,先加1,后取变量的值参与运算;
(2)++ 作用在变量右边,先取变量的值参与运算,后加1。
main()
{
int i=8;
printf("%d\n",++i); i自增1(8+1),i 当前为 9,输出 i 的值 9,理由:(1)
printf("%d\n",--i); i自减1(9-1),i 当前为 8,输出 i 的值 8,理由:同上
printf("%d\n",i++); 输出 i 的值 8,i自增1(8+1),i 当前为 9,理由:(2)
printf("%d\n",i--); 输出 i 的值 9,i自减1(9-1),i 当前为 8,理由:同上
printf("%d\n",-i++); 取 i 的值 8,将8取负,输出 -8,i自增1(8+1),i 当前为 9,理由:取负运算符与自增运算符同一优先级,方向自右向左。
printf("%d\n",-i--); 取 i 的值 9,将9取负,输出 -9,i自减1(9-1),i 当前为 8,理由:同上。
getch();
}
----------------解决方案--------------------------------------------------------
感谢六楼,斑竹啊,我已经明白了.讲的很详细
不过我又想到一个问题,从-i++开始,多了一个"-"号,输出的值为-8,为什么不再用(-8)+1呢
[此贴子已经被作者于2007-7-16 18:09:38编辑过]
----------------解决方案--------------------------------------------------------
是-i而不是i=-i,-i是取i值的反,i=-i是把-i的值赋给i
----------------解决方案--------------------------------------------------------