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

时间:2018-01-14 05:07:16

标签: c printf main stdio

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

我的完整代码:

#include <stdio.h>

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

它的输出如下:

7
6
-39

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

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

enter的ascii值是10&amp; ascii of 1为49,因此10-49等于39。