C中的控制指令

时间:2013-07-22 05:01:02

标签: c

我不理解它后面的循环语句和表达式。请帮我理解。

#include<stdio.h>

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

我得到的输出

2 1
3 1
4 1
5 1
6 1
7 0

6 个答案:

答案 0 :(得分:7)

y = x++ <= 5; ==&gt; y = (x++ <= 5); ==&gt;首先将x5进行比较,以检查x是否小于或等于5(x++ <= 5)的结果是10已分配给y

x成为&gt; 5(x++ <= 5)变为0所以y = 0和条件false并且循环中断,

答案 1 :(得分:1)

初始化变量:

int x = 1; int y = 1; 

3:-1有for loop个语句。初始化,2。条件,3。迭代:递增/递减
在您的情况下,您没有提供初始化条件,但是,您有条件和增量的一部分。我不认为你的for循环是以正确的方式使用的。

您应该将这部分增量与您的身体交换:

for(; y; y = x++ <= 5;)
   printf("%d %d\n", x, y)

首先,检查条件是否为真,y是否为真。然后,您打印出xy。然后,执行增量部分,x++ <= 5或不执行。结果已分配给y。它会这样做,直到您的情况为假,y == false

注意:对于良好的编程,你应该用一个花括号括起你的身体。

答案 2 :(得分:1)

基本上for语法是: for(StartCondition; Test; PostLoopOperation)DoWhileTestPasses;

在这种情况下:

StartCondition == None
Test == (y != 0)
PostLoopOperation == do some printing 
DoWhileTestPasses == set y to zero if x > 5 otherwise to non-zero THEN increment x.

这是非常糟糕的做法,因为它令人困惑。

写得更好:

int x=0;
int y=0;
for(y=0; y = (x <= 6); x++)
{
    printff("%d %d\n",x,y);
}
return(0);

答案 3 :(得分:1)

y = x++ <= 5;中,y存储条件x++ <= 5输出的值(此处x++为后增量)。如果条件为真,则y = 1否则为y = 0

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

在for循环中,您在执行for循环体后打印xy的值。

答案 4 :(得分:0)

与此相似

   int x = 1;
   for( int y = 1; y!=0 ; )
   {
       if (x++ <= 5)
       {
          y = 1;
       } 
       else
       {
          y = 0;
       }
       printf("%d %d\n",x,y);
   }

答案 5 :(得分:0)

也许这个稍微改变(但功能相同)的代码会有所帮助:

int x = 1;
int y = 1;
while (y) {
   y = (x <= 5);
   x = x + 1;
   printf("%d %d\n", x, y)
}
相关问题