当前位置: 代码迷 >> C语言 >> C 简单的问题
  详细解决方案

C 简单的问题

热度:344   发布时间:2006-11-26 09:24:19.0
C 简单的问题
int i=2;
printf("%d,%d,%d\n",++n,n+=2,--n);
为什么输出的结果为4,3,1;
而不是3,5,4;
----------------解决方案--------------------------------------------------------
你写的应该是:
int i=2;
printf("%d,%d,%d\n",++i,i+=2,--i);吧,你把i写成n了

其实,我们是不建议这样写的.在调用函数是,实参数的求值顺序,C标准库并无同统一规定.

在大多数系统中,对函数参数的求值顺序是自右向左的,上面那句就会输出:4,3,1(也就是先算--i,结果为1, 再算i+=2,结果为3, 最后算++i结果为4.所以输出4,3,1)

在有些系统中,是从左到右求值的,也就是先算++i 再算 i+=2 最后算--i,所以输出结果为3,5,4

所以,建议你如果需要输出3,5,4的话可以这样写:
int i=2,a,b,c;

a=++i;
i+=2;
b=i;
c=--i;
printf("%d,%d,%d\n",a,b,c);

----------------解决方案--------------------------------------------------------

不同的编译系统有不同的结果


----------------解决方案--------------------------------------------------------

呵呵,这个不说还真不知道呢.
一直以为是3,5,4.


----------------解决方案--------------------------------------------------------
  相关解决方案