当前位置: 代码迷 >> C语言 >> 自加,自减问题
  详细解决方案

自加,自减问题

热度:128   发布时间:2007-07-16 10:13:50.0
自加,自减问题
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
----------------解决方案--------------------------------------------------------
  相关解决方案