if else if 问题求助
#include <stdio.h> //standard input output.headervoid main()
{
char c; //定义一个字符型变量c
printf("input a character:"); //打印内容为""里面的
c = getchar(); //从键盘上输入字符
if( C < 32 )
{
printf("this is a control character: ");
}
else if( c>='0' &&c <='9' )
{
printf("this is a digit\n");
}
else if( c>='A' &&c <='Z' )
{
printf("this is a capital letter!\n");
}
else if( c>='a' && c<='z' )
{
printf("this is a small letter!\n");
}
else
{
printf("this is an other character!\n");
}
}
在编写的时候出现错误
错误在if( C < 32 )这里的子母大写C 应该是小写子母c
但是我把这里改成if( 'C' < 32 ) ,把给大写子母C加上单引号,程序也是OK的
有大神帮我解惑一下吗?
本帖最后由 jackz007 于 2022-7-3 20:03 编辑
c 是变量标识符,c 语言对字母大小写敏感,C 与 c 虽然属于同一个字母,但是,在 c 语言中,它们属于两个互不相关的标识符,你定义的变量是 c,那么,你就只能使用c 来存取这个变量,C 属于未定义变量,楼主代码的编译错误就是因为这个问题。至于 'C',已经是一个字符常量了,与变量 c 同样没有任何关系。'C' 的 ASCII 编码值是 67 显然比 32 大,所以,逻辑表达式 'C' < 32 的值是 false (逻辑假)。你这样修改虽然可以编译过去,但是,却不能起到预期的作用,没有任何意义。 ‘C'<32等价于 67<32
符合语法(值是0)
C的语法严格区分大小写
标识符C!=标识符c
C语言是区分大小写的,所以,必须写成c,至于为什么'C' < 32能通过,因为char类型与int类型会自动将字符的ASCII编码与int类型进行比较,'C'的ASCII编码是67,所以'C' < 32等价于67 < 32,这样的话,这个条件一定为真,一定会执行if,所以这样写的话没有意义
页:
[1]