以下代码的输出是
2 1
3 1
4 1
5 1
6 1
7 0
任何人都可以解释一下吗?
#include<stdio.h>
int main()
{
int x=1, y=1;
for(; y; printf("%d %d\n", x, y))
{
y = x++ <= 5;
}
printf("\n");
return 0;
}
答案 0 :(得分:2)
这是你重新制定的程序。我认为这种行为很明显。
#include<stdio.h>
int main() {
int x=1, y=1;
while (y != 0) {
if (x <= 5) y = 1;
else y = 0;
x = x + 1;
printf("%d %d\n", x, y)) ;
}
printf("\n");
return 0;
}
答案 1 :(得分:2)
它相当简单 - 你有
for(; y; printf("%d %d\n", x, y))
{
y = x++ <= 5;
}
最初为x=1
,y=1
。
第一次通过:y = x++ <= 5;
表示y = 1++ <= 5
(可以这么说),因此通过此声明 - x=2
,y=1
- 因为1<=5
评估为1
第二次传递时:y = x++ <= 5;
表示y = 2++ <= 5
(可以这么说),因此通过此声明 - x=3
,y=1
- 因为1<=5
评估为1
并且在y=0
评估到x++ <= 5
然后在6++ <= 6
循环for
中得到for(; y; printf("%d %d\n", x, y))
时,情况评估为false因为y是0。
答案 2 :(得分:1)
y
用作for
循环中的条件,在此处打印数据代替增量。当printf
返回int
时,它完全为valid
。
y = x++ <= 5;
表示increment
x并检查是否value of x <=5
。如果是y = 1
,则为y=0
。
如果y=0
,它将结束循环。
该程序也可以写成。
#include<stdio.h>
int main()
{
int x=1, y=1;
while(y)
{
printf("%d %d\n", x, y)
x++;
if(x <= 5)
y=1;
else
y=0;
}
printf("\n");
return 0;
}