鱼C论坛

 找回密码
 立即注册
查看: 2951|回复: 3

if else if 问题求助

[复制链接]
发表于 2022-7-3 19:39:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h> //standard input output.header
void 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的
有大神帮我解惑一下吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-3 19:50:34 From FishC Mobile | 显示全部楼层
本帖最后由 jackz007 于 2022-7-3 20:03 编辑

     c 是变量标识符,c 语言对字母大小写敏感,C 与 c 虽然属于同一个字母,但是,在 c 语言中,它们属于两个互不相关的标识符,你定义的变量是 c,那么,你就只能使用  c 来存取这个变量,C 属于未定义变量,楼主代码的编译错误就是因为这个问题。至于 'C',已经是一个字符常量了,与变量 c 同样没有任何关系。'C' 的 ASCII 编码值是 67 显然比 32 大,所以,逻辑表达式 'C' < 32 的值是 false (逻辑假)。你这样修改虽然可以编译过去,但是,却不能起到预期的作用,没有任何意义。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-3 21:30:25 | 显示全部楼层
‘C'<32等价于 67<32
符合语法(值是0)
C的语法严格区分大小写
标识符C!=标识符c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-4 00:11:12 | 显示全部楼层
C语言是区分大小写的,所以,必须写成c,至于为什么'C' < 32能通过,因为char类型与int类型会自动将字符的ASCII编码与int类型进行比较,'C'的ASCII编码是67,所以'C' < 32等价于67 < 32,这样的话,这个条件一定为真,一定会执行if,所以这样写的话没有意义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 04:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表