字符型变量C为什么直接可以和ASCII码比较呢?

char c;
int i=0;
while((c=getchar())!=’\n’)
if(c>=65&&c<=90) i++;
printf("%d\n",i);
提问:我的问题是 定义字符型变量c,那么c直接可以和65以及90进行比较吗?此时的字母c代表什么呢?代表ASCII码吗?不代表输入的字符吗?

在C语言里,char类型的变量存储的就是ASCII码,所以可以直接与整型的数值进行比较。char类型的变量可以看成是一个数。追问

是不是任何一个出现在C语言中的标志 字母啊 数字啊 各种符号啊 他们对应的都有ASCII码 而只有当定义成char 时候 对应的ASCII码才会出现呢?如果没有定义char 那么ASCII码是用不上的吧?

追答

不是说代码中的标识符都对应ASCII码的……


你试一试下面这段代码看看能否加深理解

#include <stdio.h>
int main()

    int a = 65; 
    char b = 'B'; 
    printf("%d, %d\n", a, b); 
    printf("%c, %c\n", a, b); 
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-05
其实就像卖房子的中介一样。ASCII码只是起到了一个中间方的作用。

就像你写int a=65;也就相当于写char a='A';
这两句话是等价的。

65是int型的,对应的是ASCII码值里的65,也就是char里的A。
同样的也可以不仅仅是十进制的int型。

再来回答你上述的问题。
比如你输入的是67,也就可以转化成C,那么67和65或90比较又有什么不可以呢?
此时字母c代表的是ASCII码值为67,代表的是C。

再来看这个程序:
65到90是我们所熟知的大写英文字母。
而这里的 i 相当于是统计了大写字母的个数。
第2个回答  2014-02-05
把char转换为int时,结果还是char的数值。
char占一个字节,int占四个字节,它们的取值范围不同,char的取值范围是0-255,在这个范围内char和int是可以通用的,char可以随时转换为int,而int如果值超出char的最大取值范围,在转成char时会报错。
相似回答