什么';这个C程序有什么问题

什么';这个C程序有什么问题,c,for-loop,C,For Loop,可能重复: 该程序的目的是打印负号20次,但它不起作用 #include <stdio.h> int main() { int i; int n = 20; for( i = 0; i < n; i-- ) printf("-"); return 0; } #包括 int main() { int i; int n=20; 对于(i=0;i

可能重复:

该程序的目的是打印负号20次,但它不起作用

  #include <stdio.h>
  int main()
  {
      int i;
      int n = 20;
      for( i = 0; i < n; i-- )
          printf("-");
      return 0;
  }
#包括
int main()
{
int i;
int n=20;
对于(i=0;i
#包括
int main()
{
int i;
int n=20;
对于(i=0;i
您使用了
--
而不是
++

将i--替换为i++。

intmain(){
int main() { 
  int i; 
  int n = 20; 
  for( i = 0; i < n; i++)
    printf("-"); 
  return 0; 
}
int i; int n=20; 对于(i=0;i

您使用的是递减而不是递增。

您是否尝试过更改

i--

只要“i”小于20,就可以循环打印“-”。 每次循环将i的值减少1后,它将继续打印 很长一段时间。将for循环的最后一部分更改为“i++”,意味着它将对每个循环执行一次迭代,并在第二十次迭代完成后停止。

i--需要是i++

你也可以这样做

 int n = -20;
  for( i = 0; i > n; i-- )

但这是糟糕的编码实践

您不会打印破折号。您可以选择Jaime Wong的解决方案,也可以这样做:

用于(i=n;i>=0;i--)
将i--更改为i++。
i——将开始时为0的值递减,随后的递减将永远不会达到20(或+20)。

这是一个经典的难题

我看到的是

“您只能更改/插入/删除代码中的一个字符,以使-打印20次”

有些答案是(如果我没记错的话)

(一)

您可以将
i
更改为
i+n


对于挑战,请尝试更改/插入/删除一个字符,使其打印-21次。(如果您想尝试,请不要阅读此答案的注释!)

您到底想如何解决此问题???
这里您试图减少一个变量的值。一个其值永远不会达到条件的变量(iit给出无限负号…@SurajRk它实际上不会给出无限。当i=-2^31时,当你尝试递减时,它最终将被包装为正。标准只定义了无符号算术进行包装;有符号溢出是未定义的行为。因此编译器允许在此处发出真正的无限循环。比较gc例如,C4.4使用
-S-O2
-S-O2-fwrapv
对该程序进行了修改。@Zack+1不知道这一点-非常适合know@Zack:在实践中,大多数通用计算机系统都会自动循环。你不能指望它。根据标准,无限循环是完全可以的,就像任何其他行为一样。是的,that循环将永远运行,因为
i
0
开始并不断变小。它将永远不会大于n,因此循环的退出条件将永远不会达到。当整数结束时,它肯定会大于n?循环将只运行比预期稍长的时间。您将打印这么多的破折号。还有,那就是这是一种很糟糕的方式。非常不规范,而且毫无意义地有点模糊。正如其他人解释的那样,这不会打印出虚线。而且,你拼写错了我的名字。哎哟,你是对的。很抱歉,这两方面都很糟糕。为什么建议一个答案是糟糕的编码实践?因为在其他情况下,你确实想减少你的co计数器。在这种情况下,计数器的递减是没有意义的。@Jamie Creativity;)一个人甚至可以从不应该以特定方式完成的事情中学习。创造力有它的位置——向显然是c语言初学者的人建议一个行动过程不是其中之一。此外,我同意计数器递减有时更有用——所以在更有用的时候建议它。同样,这里不是这样的情况。+1代表makin这是一个谜题。回答得很好。这个挑战很有趣;)很高兴我在回答之前没有看评论。
i++
 int n = -20;
  for( i = 0; i > n; i-- )
 #include <stdio.h> 
  int main() 
  { 
      int i; 
      int n = 20; 
      for( i = 0; -i < n; i-- ) 
          printf("-"); 
      return 0; 
  }
 #include <stdio.h> 
  int main() 
  { 
      int i; 
      int n = 20; 
      for( i = 0; i < n; n-- ) 
          printf("-"); 
      return 0; 
  }
 #include <stdio.h> 
  int main() 
  { 
      int i; 
      int n = 20; 
      for( i = 0; i + n; i-- ) 
          printf("-"); 
      return 0; 
  }
#include <stdio.h>
int main()
{
    int i;
    int n = 20;
    for( i = 0; i < n; i-- )
        printf("-");
    return 0;
}