'1'在C语言里是数字还是字符
是字符,只要是被一对单引号引起来,那就是字符。
除了转义字符之外的字符就是普通字符,字符包含普通字符和转义字符,需要用‘’(两个单引号)包含。例如 'a' 是普通字符;'\n'是转义字符,转义字符是C语言中表示字符的一种特殊形式。
扩展资料:
字符包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符在计算机内存放,应规定相应的代表字符的二进制代码。
代码的选用要与有关外围设备的规格取得一致。这些外围设备包括键盘控制台的输入输出、打印机的输出等等。字符作输入时,要自动转换为二进制代码存于机内,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( \)等。
参考资料来源:百度百科-字符
参考资料来源:百度百科-转义字符
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 任意字符 二位十六进制
那'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码与之前的无法对齐,仔细观察一下。还有,第一个也不准,因为第一个就不是可显示字符。这是我运行结果的一部分:
同样的道理,你也可以把49这个数字赋给字符变最,它也是按字符处理的,将49赋给整型变量,也是按数字处理的。
实际上,字符'1'的内码(ASCII码)就是49。
那如果是int a,那么a可不可以等于'1',那时a的值是1还是49,
int a = '1';
a的值实际为49