我的 C 程序在新行上打印 -39,我不明白为什么

My C program prints -39 on a new line and I can't figure out why

我一直在尝试在我的大学里尝试使用 C class,我发现我的程序可以做一些事情,即使我没有告诉它!​​

我的完整代码:

#include <stdio.h>

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

它的输出如下所示:

7
6
-39

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

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

因为你在末尾输入了'enter' 所以它减去 enter 的 ascii 值 ascii 值为 1 .

enter 的ascii 值为10 & 1 的ascii 为49 所以10-49 等于39 .