我在 C 语言中有以下代码片段。

int main()
{
    int x = 1, y = 1;
    for( ; y ; printf("%d %d  ", x, y))
    {
        y = x++ <= 2;
    }
    printf("\n");
    return 0;
}

它给出了类似的输出
2  1
3  1
4  0

我不明白 y = x++ <= 2 的输出和含义。

最佳答案

y = x++ <= 2 由两部分组成:(1) x++ 和 (2) 赋值 y = ...x++ 只是意味着后增量:您获取 x 的值,然后通过 x 增加 1

赋值 y = ... 会将 y 的值设置为 1(如果 x++ <= 2 为真)或 0(如果 x++ <= 2 为假)

现在棘手的部分是您的 for-loop :

for( ; y ; printf("%d %d  ", x, y))

请注意,在您的 for-loop 中,每次循环后都会打印 printf("%d %d ", x, y)(增量条件)。

并注意终止条件 ;y; 这意味着只要你的 y is 1 你将保持在循环中。将它们全部结合起来,你会得到结果:
2 1 3 1 4 0

按顺序看是这样的:
//first x = 1, y = 1
y = x++ <= 2; //x = 1 <= 2 returns 1, x++, x becomes 2, y becomes 1
printf("%d %d  ", x, y)// you get your first 2 1
y = x++ <= 2; //x = 2 <= 2 returns 1, x++, x becomes 3, y becomes 1
printf("%d %d  ", x, y)// you get your 3 1
y = x++ <= 2; //x = 3 <= 2 returns 0, x++, x becomes 4, y becomes 0
printf("%d %d  ", x, y)// you get your 4 0

关于c - y = x++ <= 2 在 C 中的含义是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36063100/

10-09 15:53