这段 C 代码有什么问题?如果它是一个逻辑错误,请提出正确的方法
What is wrong in this C code ? If its a logical error please suggest the right way
int i;
for(i=7;i<6;i--)//loop does not execute
{
printf("*");
}
上面的代码应该打印一个 * 但它什么也没做。 运行 不应该和 for(i=7;i<8;i++) 一样吗?
这是逻辑错误吗?请帮忙。
让我们看看循环
for( i = 7 ; i < 6 ; i-- )
i
被初始化为7
,但是你有条件i < 6
,但是i
是7
,因此不满足循环的条件。因此,代码甚至没有经过一次循环迭代。
也许,你的意思是i > 6
在这个循环中
for(i=7;i<6;i--)
首先你设置i为7,然后检查i是否小于6。因为i等于7,所以它不小于6,循环永远不会迭代。
如果你希望循环迭代一次那么你应该写
for(i=7; i > 6;i--)
尽管使用这些幻数,循环看起来很奇怪。:)不清楚程序员的意图是什么。
一个for
循环有3个部分
for( init ; cond ; step )
当执行到循环时,
init
被执行。
cond
被评估。
- 如果为假,则中断循环
- 如果为真,进行下一步
- 执行循环体。
- 做
step
(在很多情况下,这是increment/decrement)
- 转到第 2 步
在您的例子中,i
设置为 7。然后检查条件 i<6
。显然,7<6
是错误的。所以循环永远不会被执行。
而没有.
for(i=7;i<6;i--)
和
for(i=7;i<8;i++)
不一样。
也许你想写
for(i=7;i>6;i--) //'>' instead of '<'
其中循环将执行一次。
int i;
for(i=7;i<6;i--)//loop does not execute
{
printf("*");
}
第一次执行这个循环时"i"的值是7
接下来我们必须检查条件 "i<6" 是否为假,因为 7<6 为假,那么它不会给出任何输出
for(i=7;i<8;i++) 不同,因为第一个 "i" 值为 7
然后它检查条件它是 i<8 (7<8) 它是 true.then 它执行一次
,之后它从 1 (i++),
递增然后它检查条件。那么它是错误的,因为 "i" 是 8
然后它停止执行。
int i;
for(i=7;i<6;i--)//loop does not execute
{
printf("*");
}
上面的代码应该打印一个 * 但它什么也没做。 运行 不应该和 for(i=7;i<8;i++) 一样吗?
这是逻辑错误吗?请帮忙。
让我们看看循环
for( i = 7 ; i < 6 ; i-- )
i
被初始化为7
,但是你有条件i < 6
,但是i
是7
,因此不满足循环的条件。因此,代码甚至没有经过一次循环迭代。
也许,你的意思是i > 6
在这个循环中
for(i=7;i<6;i--)
首先你设置i为7,然后检查i是否小于6。因为i等于7,所以它不小于6,循环永远不会迭代。
如果你希望循环迭代一次那么你应该写
for(i=7; i > 6;i--)
尽管使用这些幻数,循环看起来很奇怪。:)不清楚程序员的意图是什么。
一个for
循环有3个部分
for( init ; cond ; step )
当执行到循环时,
init
被执行。cond
被评估。- 如果为假,则中断循环
- 如果为真,进行下一步
- 执行循环体。
- 做
step
(在很多情况下,这是increment/decrement) - 转到第 2 步
在您的例子中,i
设置为 7。然后检查条件 i<6
。显然,7<6
是错误的。所以循环永远不会被执行。
而没有.
for(i=7;i<6;i--)
和
for(i=7;i<8;i++)
不一样。
也许你想写
for(i=7;i>6;i--) //'>' instead of '<'
其中循环将执行一次。
int i;
for(i=7;i<6;i--)//loop does not execute
{
printf("*");
}
第一次执行这个循环时"i"的值是7
接下来我们必须检查条件 "i<6" 是否为假,因为 7<6 为假,那么它不会给出任何输出
for(i=7;i<8;i++) 不同,因为第一个 "i" 值为 7
然后它检查条件它是 i<8 (7<8) 它是 true.then 它执行一次
,之后它从 1 (i++),
递增然后它检查条件。那么它是错误的,因为 "i" 是 8
然后它停止执行。