第36题  在C语言中,下列哪一个是合法的字符常量

­      A     ′\015′

­      B     ′\0XBC′

­      C     ′\078′

­      D     ′\0xbc′

答案  A

解析

考查八进制字符常量和十六进制字符常量的区别。

′\015′是合法八进制字符常量。′\078′错在数字8,8不是八进制数字。′\0XBC′和 ′\0xbc′看上去像十六进制字符常量,错在数字0是多余的,且字母x只能是小写形式。

以上解释只适用于二级考试答题,但根据C标准,其它3个选项也都是合法的,可以认为这超出了二级C的命题范围。

知识点

① 带有单引号的单个字符是字符型常量,如 ′a′、′B′、′8′、′∗′ 等,只表示可显字符。

② 八进制转义序列是字符型常量,如 ′\0′、′\07′、′\012′、′\147′ 等等,单引号和 \ 是必须的,\ 后跟1个、2个或3个八进制数字,八进制数字包括0、1、2、3、4、5、6、7。

③ 十六进制转义序列是字符型常量,如 ′\x41′、′\x6B′、′\x7D′、′\x0A′ 等等,单引号、 \ 和小写字母x是必须的,\x 后通常跟1个或2个十六进制数字,十六进制数字包括:

­          0、1、2、3、4、5、6、7、8、9

­           a、b、c、d、e、f

­          A、B、C、D、E、F

注: a(A)至f(F)分别代表数值10至15

④ 八进制、十六进制转义序列直接指定字符在字符集中的编码值,可表示任意字符。

⑤ 基本ASCII字符集共有128个字符,编码从0至127,编码为33至127的ASCII字符与编码对照表如下图所示,编码为0至32的字符没有可供显示的图形符号。

c_choice36-01

八进制数147与十进制数103等值,因此′\147′等价于′g′

十六进制数6B与十进制数107等值,因此′\x6B′等价于′k′

练习题1  在C语言中,下列哪一个是合法的字符常量

­      A     ′\019′

­      B     ′\0X7C′

­      C     ′\077′

­      D     ′\0x7b′

答案  C

解析  八进制数077与十进制数63等值,因此′\077′等价于′?′,其它选项均违背八进制、十六进制字符常量的格式,请自行分析。

赞赏

返回