【问题标题】:Strange output in C ProgramC程序中的奇怪输出
【发布时间】:2013-11-26 00:11:18
【问题描述】:

所以我刚刚开始学习 C,如果这有什么不同,我会使用 gcc,并且由于某种原因,这个简单的程序给了我奇怪的输出:

    #include <stdio.h>

    main()
    {
        int c;

        while (c == getchar() != EOF)
        {   
            putchar(c);
        }   
     }

我保存它并使用 :!gcc % 然后在 vim 中使用 :!./a.out,当我输入任何字母然后 Enter 时,它只会给我“^^”作为输出。我四处寻找,找不到其他人有这个问题,它是直接从 K&R 复制的,所以我不知道是什么导致了这个错误,有人知道发生了什么吗?

【问题讨论】:

  • 你确定是while ((c == getchar()) != EOF) 而不是while ((c = getchar()) != EOF)
  • 不,你是对的,我在这里重新输入错了,但我在原程序中输入正确,我将编辑原帖
  • 你现在拥有的东西无法编译。
  • 他在c之前多了一个括号
  • OTOH,添加了缺少的)== 修复了它确实编译,并按宣传的那样工作。看不到^,除非我输入一个。 (然后我又看到了另一个——仍然“像宣传的那样”。)

标签: c gcc output getchar putchar


【解决方案1】:

Ned Stark 的回答是正确的,我有 2 个等号,这就是导致奇怪错误的原因。感谢所有的帮助家伙!内德,如果您想发布答案,我会将您的答案标记为正确,否则我会在两天内将其标记为正确。

【讨论】:

  • 我们都知道 ;-) 但你能弄清楚为什么你得到了意想不到的结果吗?即,双重 == 导致它,但 为什么 这样做?
  • while 循环从未执行过,是吗?
  • 嗯,是的,我不确定,我完全不知道“^”与任何事情有什么关系......
  • 您需要像这样更改代码 while (c = getchar() )。它会完美地工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2014-02-04
  • 2020-05-14
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多