b=(a=3*5,a*4), a+15

来源:百度知道 编辑:UC知道 时间:2024/06/22 00:21:58
int a,b;
b=(a=3*5,a*4), a+15
b=?
说明原因,谢谢

b=60;
解释:按照符号的优先级,"()"最高,","最低,
于是先执行a=3*5;于是a=15,因为a=3*5,a*4外面加了括号,于是执行a*4;
然后执行b=,这时会把a*4的值赋给b,等于执行了b=a*4;最后执行a+15,这时没有任何作用。验证程序:
#include"stdio.h"
void main()
{
int a,b;
b=(a=3*5,a*4),a+15;
printf("b=%d",b);
}

b = 60 (3*5*4)

因为根据优先级 () 大于 = 大于 ,逗号运算
,逗号运算的顺序是从左到右

上面其实先执行 b=(a=3*5,a*4)
程序先执行 a=3*5 a变成 15
再计算a * 4 = 15 *4 =60

最后执行 a +15 ,没赋值给任何变量

60,先执行括号里面的 逗号顺序执行,a=15,然后15×4 = 60

现在是b=60,a+15
继续a+15=30,但是没有变量接收这个30而已 over