This question already has answers here:
What does the comma operator , do?

(8个答案)


6年前关闭。




我不明白这是如何运作的以及为什么会产生
以下输出。
int main()
{
    int i=0;
    int a=5;
    int x=0;

    for(i=0; i<5; x=(i++,a++))
    {
        printf("i=%d a=%d x=%d\n",i,a,x);
    }
}

这给出作为输出:
i=0 a=5 x=0
i=1 a=6 x=5
i=2 a=7 x=6
i=3 a=8 x=7
i=4 a=9 x=8

最佳答案

暂时忘记++,它们只是分散注意力。

int a = 5;
int i = 0;
int x = (i, a);

x的值设置为5。评估并丢弃i,然后评估a并将其分配给x

在循环中,后增量a++会执行其始终执行的操作;返回当前值,然后递增变量。因此,x在增加a的值之前先取其值,然后a的值增加1。因为还对i++进行了评估,所以其值也增加了。

关于c - for(i = 0; i <5; x =(i++,a++))的工作原理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24957383/

10-11 21:13