getchar()或getche()输入字符的问题

Sha*_*fhs 2 c

当我编译下面在Borland C++ v5.02中编写的C代码(来自自学C,第2版 -Herbert Schildt)时,我收到如下警告信息:"c61.c(7,6):转换可能会丢失有效数字"

怎么了?

#include "stdio.h"

main()
{
 char ch;
 ch = getchar();
 printf(" You typed: %c", ch);

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

与另一个例子相同的问题:

#include "conio.h"
#include "stdio.h"

main()
{
 char ch;

 printf("Enter a character: ");
 ch = getche();
 printf("\nIts ASCII code is %d", ch);

 return 0;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

getchar()返回一个int,因此它可以返回非字符值,如EOF.因此,当您将返回值存储为较小的数据类型(如char)时,您可能会丢失信息.

Schildt的书通常被认为是学习C(或C++)最糟糕的书,这是一个很好的例子.建议您购买更好的书,例如K&R.