这段 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,但是i7,因此不满足循环的条件。因此,代码甚至没有经过一次循环迭代。

也许,你的意思是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 )

当执行到循环时,

  1. init被执行。
  2. cond 被评估。
    • 如果为假,则中断循环
    • 如果为真,进行下一步
  3. 执行循环体。
  4. step(在很多情况下,这是increment/decrement)
  5. 转到第 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
然后它停止执行。