一个简单C语言问题(关于逗号表达式的值)

来源:百度知道 编辑:UC知道 时间:2024/06/16 20:21:58
初学C语言 不懂太多 请高手帮忙 看到这样一道题
main()
{ int a,b,c; c=(a=3,b=a--);
printf("c=%d,a=%d,b=%d\n",c,a,b);
}
结果是 c=3,a=2,b=3 我不理解的是 c=(a=3,b=a--); 括号里面是逗号表达式 c的值应该是b=a--的值 可是b=a--是个赋值表达式 赋值语句的值不应该是0或者1吗 怎么结果会是3(b的值)呢 要是改成c=(a=3,b=a--,a+b);这个我还能理解 c的值是5 因为a+b的值是5

你错啦,赋值表达式的值当然是所赋的值了,还有b的值是3是因为a是被赋给b之后才自减的,a是3,赋给b当然也是3了,懂了吧

c=(a=3,b=a--);
这个语句的执行顺序,相当于如下几条语句:
a=3;
b=a;
c=b;
a--;

所以, c=3,a=2,b=3

逗号表达式是运行逗号后面表达式,就是b=a--,a--知道吧,就是运算了结果后再减一

赋值表达式得知不是1或0而是所赋的值

b=a--=3所以b=3,所以c=3,a=2