从stdin读取整数给出了奇怪的结果

时间:2018-04-23 18:51:00

标签: c

我尝试使用以下C程序从stdin读取整数。

#include <unistd.h>
#include <stdio.h>
int main() {
  int a = 0;
  read(0, &a, sizeof(int));
  printf ("a = %d\n",a);
}

然而,我得到了奇怪的结果:当我输入34时,我认为程序输出34,但它确实是668723.为什么?

1 个答案:

答案 0 :(得分:2)

Weather Vane张贴comments

read()读取字节而不是ascii

  

read()函数将尝试从文件

中读取字节

ASCII 34\n在二进制文件中变为0001010 00110100 00110011。 (或者由于字节顺序而真的\n43

转换为十进制的下一个0001010 00110100 00110011变为668723