'1'在C语言里是数字还是字符

char a
a='A'+'1'-'2'
这里的'1'-'2'到底算什么,是数字吗?

是字符,只要是被一对单引号引起来,那就是字符。

除了转义字符之外的字符就是普通字符,字符包含普通字符和转义字符,需要用‘’(两个单引号)包含。例如 'a' 是普通字符;'\n'是转义字符,转义字符是C语言中表示字符的一种特殊形式。

扩展资料:

字符包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符在计算机内存放,应规定相应的代表字符的二进制代码。

代码的选用要与有关外围设备的规格取得一致。这些外围设备包括键盘控制台的输入输出、打印机的输出等等。字符作输入时,要自动转换为二进制代码存于机内,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( \)等。

参考资料来源:百度百科-字符

参考资料来源:百度百科-转义字符

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-18
当然是字符。只要是被一对单引号引起来,那就是字符。
1、除了转义字符之外的字符就是普通字符。字符包含普通字符和转义字符,需要用‘’(两个单引号)包含。例如 'a' 是普通字符;'\n'是转义字符。
2、转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( \)等。转义字符用反斜杠\后面跟一个字符或一个八进制或十六进制数表示。
转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制
第2个回答  2014-08-23
当然是字符。只要是被一对单引号引起来,那他就是字符。由于字符不能直接相加减,所以,每一个字符按照其ascii码转换成整型数据,再相加减,最后把得到的整数转换成字符,流程就是这样追问

那'1'-'2'是-1个ascii码吗

追答

通过查表,可得:'1'=49 '2'=50 'A'=65

所以你上面的a=65+49-50=64

再查表,得a='@'

这就完了,你记住字符其实实质上是一个整数,加加减减都是通过ascii码进行的

另外,对你另外一个追问回答:

int a可以,但不能int a='1',因为类型不一样,可以写成int a = (int)'1'.这时,a=49。永远记住,'1'不等于1,因为字符不是对应的那个整数,字符是按照其ascii码转换成整数的,不知道,就去查表。或者给你一个程序,编译运行一下吧。好好看看。

#include <stdio.h>


int main()

{

int i;

for(i=0;i <= 255;i++)

{

printf("%c\t\t\t",i);

printf("%d\n",i);

}

return 0;

}

告诉你,显示?的就是不能显示出来的字符。这时,后面的ascii码与之前的无法对齐,仔细观察一下。还有,第一个也不准,因为第一个就不是可显示字符。这是我运行结果的一部分:

本回答被提问者采纳
第3个回答  2014-08-23
C语言中,将'1'赋值给字符变量,它就是按字符处理的,赋值给整型变量,它就是按数字处理的。
同样的道理,你也可以把49这个数字赋给字符变最,它也是按字符处理的,将49赋给整型变量,也是按数字处理的。
实际上,字符'1'的内码(ASCII码)就是49。追问

那如果是int a,那么a可不可以等于'1',那时a的值是1还是49,

追答

int a = '1';
a的值实际为49

第4个回答  2015-10-16
'1' 表示字符,C语言里是用单引号来表示单个字符的,而不是表示数字,字符在内存中存储的是其对应的ASCII值的,字符'1'的ASCII值为49,那么在内存单元中存放的是是49,而不是数字1。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网