当我编译下面在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.
| 归档时间: |
|
| 查看次数: |
2701 次 |
| 最近记录: |