在printf语句中,是不是从右到左输出的?(比如printf("%d",a ,a++)就是先输出a++的值,再输出a的)

如题所述

如果你用TC,那么printf语句对参数的处理是从右到左进行的。但是如果你使用VC,则printf语句对参数的处理是从左到右进行的。
不同类型的编译器对此处理的方式不同,因此,需要编程测试一下来确定处理顺序。

比如使用下列测试代码:

#include<stdio.h>
void main()
{
int a=1;
printf("%d,%d\n",a,a++);
printf("%d\n",a);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-14
应该是从左到右输出的吧,先输出a,再输出a++,而且你的格式化字符也少了一个,要一一对应的
第2个回答  2017-11-05
不是从右到左“输出”的,而是从右到左计算的!输出是从左到右的!

在printf语句中,是不是从右到左输出的?(比如printf("%d",a ,a++)就...
如果你用TC,那么printf语句对参数的处理是从右到左进行的。但是如果你使用VC,则printf语句对参数的处理是从左到右进行的。不同类型的编译器对此处理的方式不同,因此,需要编程测试一下来确定处理顺序。比如使用下列测试代码:include<stdio.h> void main(){ int a=1;printf("%d,%d\\n",a,a++);...

...a=0; printf("%d%d%d",a++,a++,a++,a++); 输出:3210 why?_百度知 ...
printf函数的输出顺序是从右到左, 并且本语句所用的自加 加号均在a的后面,故先输出a 再自加。所以 第一次 a=0 a++=1 第二次 a=1 a++=2 第三次a=2 a++=3 第四次 a=3 a++=4 故 输出 3210 输出后a的值已经变成4 ...

为什么结果是321,而非123
printf语句的运算顺序是右结合的,也就是说是从右向左计算表达式的值的 所以printf("%d%d%d\\n",a++,a++,a++); 的运算顺序是:先计算最右的表达式a++,结果为1,计算后a为2,再计算中间的表达式a++,结果为2,计算后a为3,再计算最左的表达式a++,结果为3,计算后a为4,所以输出的是:321 ...

printf语句从右向左计算?
编译的时候确实是从右向左的。输出的时候再从左向右。如你给的题应该是a=2所以输出是2 又如 int i=8;printf("%d\\n%d\\n%d\\n%d\\n",++i,--i,i++,i--);写在一起的时候程序器是从右向左计算的。也就是说 i-- ---8,i=7 i++ ---7,i=8 --i ---7,i=7 ++i ---8,i=...

求解释short a = 32767; printf("%d%d\\n", a, a++); 输出...
printf()函数输出是一个从右向左的过程,所以先执行a++的输出,因为a++是后缀表达式,输出后再执行a++操作,输出后a+1的操作,a=32768,因为整形占有2个字节,表达范围为-31768~32767。数据在及计算机中是以补码的形式保存的,所以高位溢出后1000,0000对应的原码是-0,对应的补码就是补码-32768所以...

printf()的输出结果?
执行int a=1; printf("%d, %d, %d\\n", a, ++a, a++)的结果为3,3,1。这个语句的输出结果不是唯一的,因为对于求值的顺序是不一定的,所以说还有可能输出的结果为1,2,2。当求值的顺序为自右向左是,那么a++先引用1然后再加1,会输出1,然后++a是先加1再引用,会输出3这个结果,...

...c=a++\/--b; printf("%f,%f,%d\\n",c,a++\/--b ,a%4); 求解释,_百度知...
知识点:1、printf语句是自右向左计算,自左向右输出。2、i++(--)是先使用再加(减)1,++(--)i是先加(减)1再使用。所以:1、c=a++\/--b=5\/3=1.666667,计算后a的值为6.2、在printf语句中,先计算a%4,求余,6%4=2;3、接着计算a++\/--b=6\/2=3,然后a的值变为7 综上...

c语言中int a=2,printf("%d%d%d",--a,a++,--a)输出结果是什么...
printf是自右往左运算的 先算最右边的--a,--a整个表达式的值是1,将1压栈,运算结束后a=1.其次是中间的a++,a++表达式的值是1,将1压栈,运算后a=2;最后是最左边的--a, --a表达式的值是1,将1压栈,预算后a=1。然后将栈的值依次出栈。结果是111 ...

C语言a=5; printf("%d,%d,%d",a,++a,a++); 输出为什么是7,7,5?
printf函数的赋值采用右结合性,所以先计算a++,这是先取出a的值,也就是5,然后a再+1,变为6;接着计算++a,这是先把a+1,再取出a的值,所以是7;最后a就是7。所以最终输出结果就是7,7,5

在c语言中int a=5;printf("%d %d",++a,a++);答案是6 和5,为什么不是6...
printf()在对逗号后面的数据处理时是按照从右往左的顺序的,即先执行a++,再执行++a,这样,输出的第二个数就是5了,而在执行++a时,c语言中并不认为这是第二次使用a(这段执行过程最好看汇编),所以执行的其实是5+1,所以输出的第二个数是6 其实你可以试一下printf("%d %d",++a,++a)...

相似回答