我的C程序在新行打印-39,我无法弄清楚原因

Kyr*_*zis -1 c printf program-entry-point stdio

我一直在玩,并试图为我的大学课程试验C,我找到了我的程序所做的事情,即使我没有告诉它!

我的完整代码:

#include <stdio.h>

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

它的输出看起来像这样:

7
6
-39
Run Code Online (Sandbox Code Playgroud)

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

use*_*738 5

如果你看这个很清楚.首先你输入8然后7你输入\n(或按下ENTER)的ASCII值为10.10-49(49是ascii的值'1')是-39你打印过来的.