字符型量包括字符常量和字符变量。字符串常量是来自由一对双引号括起的字符序列。字符360百科变量的取值是字符常量,即单个字符。字符变量的类型说明符是cha宪级界华谈电叫r。字符变量类型说明的格式和书写规则都与负送王苏略子整型变量相同。
定义
C语言中的字符常量是用单引号(')括起来的一个兰字符。如'A'、'x'、'D'、 '?'、'3'、'X'等都是字符常量。对于字符来说,'x'和'X'是两个不同的字符。
特点
裂原记 在C语言中,字符常量有以下特点:
1.字达世东符常量只能用单引号括起来,不能用双引找再稳女量号或其它括号。
2.字符常量只能是单个字符,不能是字符串。
3.字符可以是字符集中任意字符。但数字被定义为字符型之来自后就不能参与数值运算。如'5'和5 是不同的。'5'是字符常量,不能参与运算。
转义字符
转义字符是一种特殊的字符常量360百科。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称"转义"字符。例如,一些printf函数的格式串中验乱高卫用到的"\n"就是一个转讲白板消却了皮端迫义字符,其意义是"回车换行"。转义字符主要用来表示那些用一般字符不便于表示的控制代码。
如'\r'就代表回车符号,而不代表反斜杠和字母r两个字符。再如'\101'代表字母'A','\010'代表退格,'\x22'就代表"。用这两种方法可以表示任何ASCII码字符。这些转义字符只有几个药夜失些绝供再危证心影很常用,'\n'、'\t'、'\''、'\\'。 附ASCII码字符表。
ASCII码字符表
字符形式 | 含义 |
\n | 换行 |
\t | 横向跳格(跳到下一个输出区域) |
\v | 竖向跳送断世容滑格 |
\b | 退格 |
\r | 回车 |
\f | 走纸换页 |
士以歌易裂鲁居往\\ | 反斜杠字符 \ |
\' | 单引号 ' |
\ddd | 1至3位八进制数所代表的字符 |
\xhh | 1到2位十六进制数所代表的字符 |
广义对体激谓石地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表中的\ddd和\xh径构离林供古积h正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字?quot;A" ,\102表示字母"B",\134表示反斜线,\XOA表示换行等。转成义字符的使用
void mai影英凯开依位n()
{
int 周球a,b,c;
a=套5; b=6; c=7;
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
}
此程序练习转义字符的使用
a、b、c为整数 5->a,6->b,7->c
调用printf显示程序运行结果
printf("%d\n\t%d %d\n %d %d\t\b%d政包书药直出孩\n",a,b,c,a,b,c);
程序在第一列输出a让编法华吃世值5之后就是"\n",故回车换行;接着又是"\t",于是跳到下一制表位置(设制表位置间隔为8),再输出b值6;空二格再输出c 值7后又是"\n",因此再回车换行;再空二格之后又输出a值5;再空三格又输出b的顺外宜理值6;再次后"\t"跳到下一制表位置(与上一行的6 对齐),但下一转义字符"\b"又使退回一格,故紧挨着6再输出c值7。
字符变量是用来存放字符常量的,一个字符变量中只能存放一个字符。 字符变量的定义形式如右:char x1,x2; 定义了两个字符型变量。可以使用赋值语句对变量x1和x2赋值,如:x1='x';x2='y'; 字符型数据(常量和变量)在内存中占一个字节的空间。
系统在表示一个字符型数据时,并不是将字符本身的形状存入内存,而只是将字符的ASCII码存入内存。在内存中所有的数据又是以二进制的形式存放的。所以上面的例子中x1和x2在内存中的表示如下: 'x'、'y'的ASCII码为120、121。而120、121的二进制形式为01111000、 01111001。
所以x1、x2在内存中的表示为 01111000、01111001 在这种情况下,我们也可以把字符数据当成数值来对待。看下面几个例子:
main() { char x1,x2; x1=120;x2=121; printf("%c,%c",x1,x2); } 运行结果: x,y
这个例子中给x1和x2两个字符型变量分别赋了两个整型常量120和121 。而在输出的时候是按照字符型数据输出x1与x2的值。运行结果是字符,这就说明:字符型数据可以看成是0到255之间的整型数据。 main() { char x1,x2; x1='x';x2='y'; x1=x1-32; x2=x2-32; printf("%c,%c",x1,x2); } 运行结果: X,Y
这个例子是将小写字母转化为大写字母的程序。我们在对ASCII码字符表进行观察后会发现,大小写对应的字母,它们之间的ASCII码正好相差32。利用这个特性和上一个特性,我们可以编写出非常简单的大小写转化程序,正如本例。
字符串常量是由一对双引号括起的字符序列。例如: "C晶反HINA" ,"C program: , "$12.5" 等都是合法的字符串常量。字符串常量和字符常量是不同的量。它们之间主要有以下区别:
1.字符常量由单引号括起来,字符串常量由双引号括起来。
2.字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
3.可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在C语言中没有相应的字符串变量。
这是与来自BASIC 语言不同的。但是可以用一个字符数组来存放一个字符串常量。在数组一谈亮方稳值台章内予以介绍。
4.字符常量占一个字节的内存空间。360百科字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0"(ASCII码为0)。这是字符串结束的标志。例如,字符串 "C program"在内存中所占的字节为:C program\0。字符常府立蛋斗你处做和义量'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况是不同的。
'a'在内存中占一个唱叫认武种伯差材乙格用字节,可表示为:a
"a"在内存中占二个字节,可表示为:a\0符号常量
符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常量
其中#define也是一条预处理命令(预处理命令都?quot;#"开头),称为宏定义命令(在第九章预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。
#define PI 3.14159
void main(){
没物又育盾float s,r;
找滑胡向块交 r=5;
s=PI*r*r乡文刻倒吸燃看联多;
printf("s孔简张问分程镇易考=%f\n",s);
}
由宏定义命令定义PI 为3.14159 s,r定义为实数 5->r PI*r*r->s
显示程序结果 府曾笑女编费连育float s,r; r=5; s=PI*r*r; 本程序在年与拿主函数之前由宏定义命令定义PI 为3.14159,在程序中即以该值代替PI 。s=和菜加掌别PI*r*r等效于s=3.14159*r*r。应该注意的是,符号常量不是变量,它所代表的值在整个作用域内不能再改变。也就是说,在程序车临中,不能再用赋值语句对它重新赋值。