visual c++6.0 运算方向到底什么?

[复制链接]
查看11 | 回复5 | 2009-6-1 23:54:06 | 显示全部楼层 |阅读模式
#include
void main()
{
int i=1;
printf("%d%d",i,++i);
}运结果为22。

#include
void main()
{
int i=1;
printf("%d%d",i,i++);
}
运行结果为11。
...
回复

使用道具 举报

千问 | 2009-6-1 23:54:06 | 显示全部楼层
前一个printf("%d%d",i,++i);:既然i输出为2,说明先执行了++i,否则会是12后一个printf("%d%d",i,i++);:既然i输出为1,说明后执行了i++,否则会是12由上可推断++、--是会提前执行(在左边)或者延后执行(在右边)的,与运算方向无关了 在这里虽然计算时是从右到左,但计算到++d时,...
回复

使用道具 举报

千问 | 2009-6-1 23:54:06 | 显示全部楼层
想必LZ应该知道前加(++i)和后加(i++)的区别,LS解释的很详细运行的结果中第二个i的值,是显而易见的,LZ疑惑的关键是第一个i的值,对吧?C中调用函数时,编译器是将函数的参数存入堆栈的,所以在执行时出栈使得顺序是从参数列表的右边向左边执行的,这样一想你那结果也就可以解释了...
回复

使用道具 举报

千问 | 2009-6-1 23:54:06 | 显示全部楼层
你写错了吧,是不是2,2和1,1啊!好象是自右至左。i=1,++i是使用前自增!i当然是2了!...
回复

使用道具 举报

千问 | 2009-6-1 23:54:06 | 显示全部楼层
先做计算,最后才输出,而不是边计算边输出。++i是先把i加上1,使用i;而i++是先使用i,再加上1;你的第一个程序是先把i加1,在作输出,第二个是先输出i,再i加1,所以才有这两种结果。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行