c语言char怎么赋值
c语言char的用法
c语言char的用法 C语言程序设计 课程是高等院校计算机专业基础课程之一,其教学效 果直接影响学生在计算机方面的应用。下面来个大家介绍c语言char的用法。
C语言基本类型:字符型(char)用法介绍 1.字符型(char)简介 字符型(char)用于储存字符(character),如英文字母或标点。严格来说, char 其实也是整数类型(integer type),因为 char 类型储存的实际上是整数,而 不是字符。计算机使用特定的整数编码来表示特定的字符。美国普遍使用的编码 是 ASCII(American Standard Code for Information Interchange 美国信息交换标准 编码)。例如:ASCII 使用 65 来代表大写字母 A,因此存储字母 A 实际上存 储的是整数65。注意:许多IBM大型机使用另一种编码——EBCDIC(Extended Binary-Coded Decimal Interchange Code 扩充的二进制编码的十进制交换码);不 同国家的计算机使用的编码可能完全不同。
ASCII 的范围是 0 到 127,故而 7 位(bit)就足以表示全部 ASCII。
char 一般占用 8 位内存单元,表示ASCII绰绰有余。许多系统都提供扩展 ASCII(Extended ASCII),并且所需空间仍然在 8 位以内。注意,不同的系统提 供的扩展 ASCII 的编码方式可能有所不同! 许多字符集超出了 8 位所能表示的范围(例如汉字字符集),使用这 种字符集作为基本字符集的系统中,char 可能是 16 位的,甚至可能是 32 位 的。总之,C 保证 char 占用空间的大小足以储存系统所用的基本字符集的编码。
C 语言定义一个字节(byte)的位数为 char 的位数,所以一个字节可能是 16 位, 也可能是 32 位,而不仅仅限于 8 位。
2. 声明字符型变量 字符型变量的声明方式和其它类型变量的声明方式一样:
char good;
char better, best;
以上代码声明了三个字符型变量:good、better,和 best。3. 字符常量与初始化 我们可以使用以下语句来初始化字符型变量:
char ch = “A“;
这个语句把 ch 的值初始化为 A 的编码值。在这个语句中,"A" 是 字符常量。C 语言中,使用单引号把字符引起来就构成字符常量。我们来看另 外一个例子:
char fail;
/* 声明一个字符型变量 */ fail = "F";
/* 正确 */ fail = "F";
/* 错!"F" 是字符串字面量 */ 把字符用双引号引起来构成字符串字面量,所以第三个语句是错误的。
我们会在后续的教程中讨论字符串,现在暂且把它放下。
因为字符实质上是以数字的形式存储的,所以我们可以直接使用数字 来初始化字符变量,或者给字符变量赋值:
char ch = 65;
/* 不好的风格 */ 在 ASCII 中,A 的编码是 65,所以对于使用 ASCII 的系统来说, 这个语句等同于 char ch = "A";。使用非 ASCII 的系统中,65 代表的不一定是 A, 而有可能是其它任何字符,所以使用数字来初始化字符变量,或者给字符变量赋 值是一种不好的风格,因为移植性太差了!但是,使用字符常量(例如 "A")来初始 化字符变量,或者给字符变量赋值,字符变量得到的一定是我们所期待的字符的 编码值。例如:
char ch = "A";
无论在使用任何编码的系统中,ch 都能够得到字符 A 所对应的编 码值。这是因为编译器会自动把 "A" 转化成 A 所对应的编码值。因此,我们应 该使用字符常量来初始化字符变量,或者给字符变量赋值;而不要用数字。
有趣的是,C 使用 int 类型来处理字符常量,而不是 char 类型。例如,在使用32位 int 的ASCII 系统中,以下代码 char ch = "C";
"C" 的编码值 67 被存储于 32 位的内存单元中;不过 ch 仍然存储 于 8 位的内存单元中,只是它的值变成了 67。因此,我们可以定义形如 "good" 的古怪字符常量。因为每个字符
的编码值占用 8 位的内存单元,所以这个常量 刚好可以存储于 32 位的内存单元。然而,用这种字符常量初始化字符变量,或 者给字符变量赋值的话,导致的结果是,字符变量只能得到字符常量的最后 8 位。
也就是说,以下代码 char ch = "good";
ch 得到的是 "d" 的值。
以后,在没有特殊说明的情况下,我们讨论的都是 ASCII。
ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字 符 0 NUL 32 (space) 64 @ 96 ` 1 SOH 33 ! 65 A 97 a 2 STX 34 " 66 B 98 b 3 ETX 35 # 67 C 99 c 4 EOT 36 $ 68 D 100 d 5 ENQ 37 % 69 E 101 e 6 ACK 38 70 F 102 f 7 BEL 39 " 71 G 103 g 8 BS 40 ( 72 H 104 h 9 HT 41 ) 73 I 105 i 10 LF 42 * 74 J 106 j 11 VT 43 + 75 K 107 k12 FF 44 , 76 L 108 l 13 CR 45 - 77 M 109 m 14 SO 46 . 78 N 110 n 15 SI 47 / 79 O 111 o 16 DLE 48 0 80 P 112 p 17 DC1 49 1 81 Q 113 q 18 DC2 50 2 82 R 114 r 19 DC3 51 3 83 S 115 s 20 DC4 52 4 84 T 116 t 21 NAK 53 5 85 U 117 u 22 SYN 54 6 86 V 118 v 23 E
TB 55 7 87 W 119 w 24 CAN 56 8 88 X 120 x 25 EM 57 9 89 Y 121 y 26 SUB 58 : 90 Z 122 z 27 ESC 59 ;
91 [ 123 { 28 FS 60 92 ¥ 124 | 29 GS 61 = 93 ] 125 } 30 RS 62 94 ^ 126 ~ 31 US 63 95 _ 127 DEL NUL 空字符 VT 垂直制表 SYN 同步 SOH 标题开始 FF 走纸控制 ETB 信息组传送结束 STX 正文开始 CR 回车 CAN 作废 ETX 正文结束 SO 移位输出 EM 媒介结束 End of MediumEOT 传输结束 SI 移位输入 SUB 换置 ENQ 询问字符 DLE Data Link Escape ESC Escape ACK 确认 DC1 设备控制1 FS 文件分隔符 BEL 响铃 DC2 设备控制2 GS 组分隔符 BS 退格 DC3 设备控制3 RS 记录分隔符 HT 横向制表 DC4 设备控制4 US 单元分隔符 LF 换行 NAK 否定 DEL 删除 4.不可打印字符(Nonprinting Characters) 有些 ASCII 字符是不可打印的。例如退格、另起一行、警报等。C 语 言提供了两种方法来表示这种不可打印字符。c语言char的用法
第一种方法是使用 ASCII 编码。例如,ASCII 编码中,7 用于表示 警报:
char beep = 7;
第二种方法是使用特殊符号序列,也就是所谓的转义字符escape sequences)。参见下表:( 转义字符 含义 ¥a 警报( Alert (ANSI C) ) ¥b 退格(Backspace) ¥f 换页(Form feed) 换行(Newline) 回车(Carriage return) ¥t 水平制表符(Horizontal tab)¥v 垂直制表符(Vertical tab) ¥¥ 反斜杆( Backslash (¥) ) ¥" 单引号( Single quote (") ) ¥" 双引号( Double quote (") ) ¥ 问号( Question mark () ) ¥0oo 八进制数( Octal value (o 代表一个八进制数字) ) ¥xhh 十六进制数( Hexadecimal value (h 代表一个十六进制数字) ) 给变量赋值的时候,转义字符必须使用单引号引住。例如:
char nl = " ";
下面我们详细学习每个转移字符的含义。
¥a(警报)是 ANSI C89 添加的,用于产生可听或者可视的警报。¥a 产 生的效果取决于硬件。一般来说,输出 ¥a 会产生鸣响。但是在某些系统,输出 ¥a 不会产生任何效果,或者仅仅显示一个特殊字符。标准明确指出,¥a 不应该 改变当前活跃位置(active position)。所谓活跃位置,是指显示设备(显示器、打字 机、打印机等等)显示下一个字符的位置。以显示器为例,活跃位置就是指光标 所处的位置,输出 ¥a 不会导致光标移动位置。
¥b、¥f、 、 、¥t,以及 ¥v 都是输出设备控制符。退格符(¥b)使当 前行的活跃位置后退一个位置。换页符(¥f)使活跃位置跳到下一页的开端。注:
换页符可用于控制打印机换页,但不会导致 PC 机的显示屏换页。换行符( )使 活跃位置跳到下一行的开端。回车符 ( ) 使活跃位置返回当前行的开端。水平制 表符(¥t)使活跃位置移动若干个位置(通常是8个)。垂直制表符(¥v)使活跃位置换 若干行。注:¥v可用于控制打印机换若干行,但是不会导致PC机的显示屏换行。
¥¥、¥",以及 ¥" 使我们可以把 ¥," 和 " 用作字符常量。如果要打 印以下句子:
"¥ is called "backslash"."我们需要使用如下语句:
printf("¥"¥¥ is called ¥"backslash¥".¥"");
¥0oo 和 ¥xhh 是ASCII码的两种特殊表示形式。如果想用八进制 ASCII码表示字符,可以在八进制数前面加上 ¥ ,然后用单引号引起来。例如:
beep = "¥007";
/* ¥007 代表 ¥a */ 打头的那些0可以省略,也就是说,写成 "¥07" 或者 "¥7" 都一样。无 论有没有打头的0 ,7 都会被当成八进制数处理。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论