请教C语言问题:int c=8;printf("%d%d",++c,--c);的输出结果,为什么这样

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:20:31
为什么(++c,--c,c++,c--)要从右到左,按这样的话(c++,c--)应输出7和8

这个问题与编译器有关。

一般在传递函数参数时会按自右向左的顺序入堆栈,如下函数调用语句
printf("%d%d",++c,--c);
在执行时,会首先将--c压入堆栈,然后才是++c,然后才是"%d%d。先压入的当然会先计算了。所以输出结果是8,7

注意:当这样写++c,--c,c++,c--;时。它是一个逗号表达式而不是函数的参数,逗号表达式的计算顺序是自左向右的。

printf("%d%d",++c,--c);
先++,此时c=9;
打印出c ;
再--,此时c=8;
打印出c

(c++,c--)应输出8和9