c语言的运算顺序问题。

来源:百度知道 编辑:UC知道 时间:2024/05/14 15:39:31
快考2级C了。今日做一下题巩固一下。遇到两个矛盾的题。类型差不多。
(1).若x为int类型,则逗号表达式(x=4*5,x*5),x+25运行后 x的值是多少?答案是20。个人也认为是20。然后遇到了另一题后。
(2).执行下面程序段后,x 的值是
int x;
printf("%d\n",(x = 3*5, x + 5));
因为是x的值不是输出的值个人认为是15,而答案却是20。这到题与第一道类型差不多,我认为是第二题答案错了,但心里总不敢肯定,是我知识不扎实还是什么?请高手指明一下。

x的值确实是15,但printf要输入最后一个逗号的值
这样你修改下程序运行下
在printf下加一条语句
printf("d%",x);
看看运行结果!

第2道题要求输出的值是后面的逗号表达式的值,而不是X的值,因此输出的是最后的X+5的值,所以是20。

答案是对的,,运算符的运算顺序是从左至右,先算出了x=15,然后输出的是x+5

因为第二道题是要求输出逗号表达式的值不是x的值所以是20