编写此代码是为了"查找给定字符是否为数字"
#include<stdio.h>
int main()
{
char ch;
printf("enter a character");
scanf("%c", &ch);
printf("%c", ch>='0'&&ch<='9');
return 0;
}
这是经过编译的,但在接受输入后,它没有给出任何输出.
编写此代码是为了"查找给定字符是否为数字"
#include<stdio.h>
int main()
{
char ch;
printf("enter a character");
scanf("%c", &ch);
printf("%c", ch>='0'&&ch<='9');
return 0;
}
这是经过编译的,但在接受输入后,它没有给出任何输出.
C中的字符实际上只是令牌表中的数字.%c
主要用于在人类喜欢读/写的字母数字标记表和C程序内部使用的原始二进制之间进行转换.
表达式ch>='0'&&ch<='9'
的计算结果为1
或0
,这是int
类型的原始二进制整数(在C++中为bool
类型).如果您try 用%c
打印该字符,您将得到索引为0或1的symbol table character,这甚至不是可打印字符(0-31不可打印).所以你打印了一个不可打印的字符...要么你什么都看不到,要么你会看到一些奇怪的符号.
相反,您需要使用%d
打印整数,然后printf
将正确转换为可打印符号'1'
和'0'
顺便说一句,要养成习惯,总是以\n
结束(一系列)printf语句,因为在许多系统上,"刷新输出缓冲区"=实际打印到屏幕上.详见Why does printf not flush after the call unless a newline is in the format string?