我在 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/