首页新闻找找看学习计划

C语言中关于printf()函数的运算顺序和逗号运算符

0
悬赏园豆:10 [已解决问题] 解决于 2019-11-13 19:45

既然在printf函数中是从右往左进行计算的,最后的结果肯定会受所有的参数所影响,那么如果转义字符和参数数量不相符合时,为什么不是按照逗号运算符的运算规则。

include <stdio.h>

int main(void) {
int a = 21, b = 11;
printf("%d\n", --a+b, --b+a);//为什么这里输出的是30,而不是31.在逗号运算符里面最后输出的结果是最后一个逗号后面的,而printf函数却是从右往左,那不会发生冲突吗?

return 0;

}

shmily涂的主页 shmily涂 | 初学一级 | 园豆:22
提问于:2019-11-10 20:52
< >
分享
最佳答案
0

实际情况是--a+b 和--b+a都运算了,所以结果是30

收获园豆:10
wwr01 | 小虾三级 |园豆:613 | 2019-11-11 11:57

顺序是怎么样的。

include <stdio.h>

int main()
{
int i = 3;
printf("%d,%d,%d\n",i,++i,i++);
return 0;
}

结果是443

那你看这题:21 已知int y,a,i=1;,则语句printf("%d,%d",-i++,(y=a=3.6*3));的输出结果为___。
A -1,10 B -2,1.8 C 0,3 D 1,18
结果为A

shmily涂 | 园豆:22 (初学一级) | 2019-11-11 19:48

被弄混了。

shmily涂 | 园豆:22 (初学一级) | 2019-11-11 19:48

看到有解释说是入栈和出栈的顺序问题。

shmily涂 | 园豆:22 (初学一级) | 2019-11-11 20:04

我好像明白了,是从右往左算,最后输出还是从左往右输出。

shmily涂 | 园豆:22 (初学一级) | 2019-11-11 20:07

@shmily涂: https://blog.csdn.net/fu_daxian/article/details/101061093

wwr01 | 园豆:613 (小虾三级) | 2019-11-12 14:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册