关于C语言++、--问题??

来源:百度知道 编辑:UC知道 时间:2024/06/06 14:32:04
以下程序的输出结果是:
main()
{
int a=21,b=11;
printf("%d\n",--a+b,--b+a);
}

为什么答案不是31呀??请各位帮我详细说下这种类型题目怎么做的??同时怎么分析的??谢谢了~~
补充问一下:那如果逗号表达式里面有几个运算式,不是只算最后一个么?那前面的计算式还需要算么??系统只是算最后一个表达式,还是前面的依次都要算,只是取最后的表达式呢??我不明白!

逗号表达式 从左到右计算 先算--a 此时a=20,在算后面一个表达式,--b+a=(11-1)+20=30

这个答案是对的!

30。printf是自右至左,里面两个逗号语句的值为最后一项的值,所以30

逗号表达式 从左到右计算 先算--a 此时a=20,在算后面一个表达式,--b+a=(11-1)+20=30

我刚才在编译器里面进行了一下
main()
{
int a=21,b=11;
printf("%d %d\n",--a+b,--b+a);
}

结果是 30 31 啊

这个题目的关键就是要知道printf()函数自右向左显示,括号()是自左向右计算.知道这些就可以解出这个题目.
o(∩_∩)o