这个C语言有个地方我看不懂

来源:百度知道 编辑:UC知道 时间:2024/05/31 11:46:38
#include<stdio.h>
main()
{
int i=0,x=0;
x=(i=2,++1,i+3,i++);
printf("i=%d,x=%d\n",i,x);
}

先处理i=2,i的值为2
再进行++i,i的值变为3
接着进行i+3,i的值未改变
最后处理i++,此时i的值变为4(书上是这么解释的不过这地方我看不懂了 第三步的时候i的值还是3,而i++又表示i未加1的值 那么i的值应该变为2了啊 怎么会是4呢,还有就是x到底是想求啥东西啊?)

逗号表达式的值是最右边的表达式的值。

逗号表达式的多个语句从左至右依次执行。

也就是说
x=(i=2, ++i, i+3, i++);
相当于
i=2;
++i;
i+3;
x=i++;

i+3虽然执行了但没有赋予i,所以i还为原来的
i++意思是i自加1,
++i指先自加1再把值赋予i