int main(int argc, char ** argv) {int x = 0, y = 0; x = ( x = y + 1, y++, y + 3); printf("x=%d y=%d\n", x, y); return 0; } |
得到输出:
x=4 y=1
对于这一句“x = ( x = y + 1, y++, y + 3);”执行顺序的理解是:
首先运行x=y+1,此时各值为x=1,y=0
然后运行y++,此时各值为x=1,y=1
再才执行y+3,此时各值为x=1,y=1,但此时运算的返回值为4,即y+1的结果。
最后执行赋值语句,即上述“( x = y + 1, y++, y + 3)”运算的返回值4赋给x,所以此时x=4,y=1