#include
void main()
{
int a;
printf("%d\n",(a=35,a4,a+5));
}
你贴的代码有错误,请看我的源代码和注释。
#include<stdio.h>
void main()
{
int a;
// printf输出表达式(a=3*5,a*4,a+5)的值
// (a=3*5,a*4,a+5) 是逗号表达式,规则是从左到右逐个计算表达式,
// 最终的值为最后表达式的值
// 首先计算 a=3*5=15,表达式值为15
// 再次计算 a*4=15*4=60,表达式值为60,注意这里a的值没有改变,还是15
// 最后计算 a+5=15+5=20,表达式值为20,作为整个表达式的值并输出
// 最终结果就是20
printf("%d\n",(a=3*5,a*4,a+5));
}
这里执行三步运算:
a = 3*5
a * 4
a + 5
括号里面是一个逗号运算表达式,输出的是最后一个式子的值值,也就是a+5的值
其中后面两个算式并没有改变a的值,且赋值优先级高于逗号
所以最后输出就是: 15 + 5 = 20
你的代码应该贴错了,如果按你的代码计算的话输出是:35 + 5 = 40
正确应该是:
#include<stdio.h>
void main()
{
int a;
printf("%d\n",(a=3*5,a*4,a+5));
}
在这段代码中,逗号运算符用于分隔表达式,并且按顺序计算它们。在这个表达式中,a被赋值为35,然后使用了逗号运算符。a4代表a乘以4,由于a此时的值为35,a4的值为140。接着,a被加上5,此时a的值为40。因此,整个表达式的值为20,即140加上5再除以7的结果。因此,最终输出结果为20。