执行int a=1; printf("%d, %d, %d\n", a, ++a, a++)的结果为3,3,1。这个语句的输出结果不是唯一的,因为对于求值的顺序是不一定的,所以说还有可能输出的结果为1,2,2。
当求值的顺序为自右向左是,那么a++先引用1然后再加1,会输出1,然后++a是先加1再引用,会输出3这个结果,最后输出一下a,结果为3。结果为:3,3,1。
当求值的顺序为自左向右的话,先输出一下a,输出1,然后++a,先加1再引用,输出2,然后a++先引用再加1,引用2,所以输出2,结果为:1,2,2。
主要就是要注意:printf()语句多个参数的执行顺序,从右往左的,但是不同编译器可能不同。
扩展资料:
printf参数表的注意:
参量表是需求输出的一系列参数,其个数务必与式样化字符串所阐明的输出参数个数一样多,各参数之间用英文逗号“,”分开,且顺序逐一对应,不然将会出现意想不到的错误。
printf使用注意:
函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。(会因编译器的不同而不同,但是大部分一样)
printf函数格式:
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。
函数的原型为:
int printf(const char *format,…);
参考资料来源:百度百科-printf()
为什么不是从左到右执行得到1,2,2
追答从左往右你看看
开始
a=1 所以打印1
然后++a,a先加一,然后变成2打印 所以是2
最后a++,表示先用a,打印2,然后a+1=3(不显示了)呵呵。
就这些了。睡了。晚安!
int a=1; printf("%d, %d, %d\\n", a, ++a, a++);结果是
执行int a=1; printf("%d, %d, %d\\n", a, ++a, a++)的结果为3,3,1。这个语句的输出结果不是唯一的,因为对于求值的顺序是不一定的,所以说还有可能输出的结果为1,2,2。当求值的顺序为自右向左是,那么a++先引用1然后再加1,会输出1,然后++a是先加1再引用,会输出3这个结果,最...
...int a=1; printf("%d, %d, %d\\n", a, ++a, a++);
结果是 3,3,1 因为printf执行的时候是从右往左的,先算a++ 再算++a 最后算a ;第一步 执行完a++之后 输出1,a的结果是2;第二步 执行++a,先自加再使用 输出3,a的结果是3;第三步 直接输出a ,即 输出3
int a=1;printf("%d,%d,%d",a++,a++,a++);结果
a++表示在使用a的当前值调用a++所在行代码后再将a的值累加1。你这段代码运行的结果就是三个1。
int a=1;printf("%d,%d,%d",a++,a++,a++);结果
4.3 对于代码 int i = 3; i = i++; 不同编译器给出不同的结果, 有的为 3, 有的为 4, 哪个是正确的?没有正确答案;这个表达式无定义。参见问题 3.1, 3.7 和 11.32。 同时注意, i++ 和 ++i 都不同于 i+1。如果你要使 i 自增 1, 使用 i=i+1, i+=1, i++ 或 +...
c语言如何理解 printf('%d,%d,%d",a++,a++,a++)
main(){ int a=1;printf("%d,%d,%d\\n",a++,a++,a++);printf("%d\\n",a);} 运行后的结果如下,你能明白吗?3,2,1 4 这个语句是明白了会明白C语言里面两个难懂的东西:printf("%d,%d,%d\\n",a++,a++,a++);首先a++和++a是如何工作的:a++就是用a参与表达式的计算,然后把a+1...
...void main() { int a =1; printf("%d,%d\\n",a,++a); } 为什么输出...
与函数调用约定的入栈顺序,一集求值顺序有关 printf是标准的__cdecl,参数自右向左入栈 但是求值顺序是语言标准中没有规定的,所以这个实际上的未定义行为
printf("%d,%d,%d,\\n",a++,a,++a)
运行结果如图所示:由于操作数据变化,执行顺序不同,其结果不同。三者联合操作与单独执行效果又不一样,单独执行效果如下:
printf("%d,%d,%d\\n",a=a+1,a++,++a);输出结果是什么
a+3,a+1,a+1,从右到左压栈
C语言a=1 printf("%d",a++)答案是什么
答案是1 a++是先把a的值带进运算在自加1 ++a是先自加1,在吧a的值带入运算 如果是 a=1 printf("%d",++a)那么就是2了 希望对你有帮助!!
为什么运行结果为 321
int a=1;printf("%d%d%d\\n",++a,a++,a);p=s;printf("%c%c%c\\n",*p++,*++p,*p);printf("%c%c%c\\n",*--p,*p--,*--p);} 运行结果为:211 221 122 在printf()个函数里,计算后面表达式的值是从最后一个开始的,并且这一个printf()函数里前置++可以改变表达式的值,而后置...