C语言中的逗号表达式

来源:百度知道 编辑:UC知道 时间:2024/06/18 13:14:56
1.为什么输出结果位20而不是65呢?

#include "stdio.h"
void main()
{int a,y;
y=(a=3*5,a*4,a+5);

printf("%d",y);

}

2.为什么结果是15呢?

#include "stdio.h"
void main()
{int a;
a=3*5,a*4,a+5;

printf("%d",a);

}

希望有谁能帮我解释以下,谢谢了。

逗号表达式,按从左到右顺序进行,先计算a=3*5,再计算a*4,然后a+5,但是最后把 a+5赋值给y。所以 a=3*5=15, a+5=20,所以最后y=a+5=20

a=3*5,a*4,a+5; ","逗号运算符优先级最低,比赋值还要低,所以先计算a=3*5, 再计算a*4,最后a+5,可见 a的值 就是3*5,与后面无关啊。所以结果是15!!

多看书

第一个中a*4之后,这个20没有赋值给a,所以此时a仍然为15,y值为15+5,为20
你应该写成a=a*4,就能够得到65了

第二个,a的值只是3*5,后面的乘和加都没直接赋值到a上去