【问题标题】:My C program prints -39 on a new line and I can't figure out why我的 C 程序在新行上打印 -39,我不知道为什么
【发布时间】:2018-06-23 03:08:53
【问题描述】:

我一直在玩并尝试在我的大学课程中使用 C 进行实验,我发现我的程序可以做一些事情,即使我没有告诉它!​​

我的完整代码:

#include <stdio.h>

int main(void) {
  int c;
  while ((c = getchar()) != EOF) {
    printf("%d\n", (c - '1'));
  }
 return 0;
}

它的输出如下所示:

7
6
-39

现在,谁能告诉我为什么要打印 -39?

【问题讨论】:

    标签: c printf main stdio


    【解决方案1】:

    因为你在最后输入了“enter”,所以它减去了 enter 的 ascii 值,ascii 值为 1 。

    enter 的 ascii 值为 10,而 1 的 ascii 为 49,所以 10-49 等于 39。

    【讨论】:

      【解决方案2】:

      如果你看一下this,就很清楚了。首先输入8,然后输入7,然后输入\n(或按ENTER),其ASCII 值为1010-4949'1' 的 ascii 值)是 -39 你已经打印了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-29
        • 1970-01-01
        • 2016-04-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        相关资源
        最近更新 更多