C语言的一个问题

以下不合法的字符常量是

A)'\018'

B '\”'

C) '\\'

D) ‘\xcc'
A为什么是不合法的?B为什么又是对的?

第1个回答  2008-01-09
\后面加三个数字是表示八进制数的方式,既然是八进制数,那么每位数字只能是在0-7之间,怎么会有8呢?

B:'\"'是"这个字符的表示方法,没有错。本回答被提问者采纳
第2个回答  2008-01-09
在C语言中“\”是转义字符;
'\”'的意思是:输出双引号”
而‘\018’,它只是想输出018,但是在C语言中,这是不可以的
第3个回答  2008-01-09
C++数据类型之一:常量和变量
一、文字常量:
常量之所以称为“文字常量”,其中“文字”是指我们只能以它的值的形式指代它,“常量”是指它的值是不可变的。同时注意一点:文字常量是不可寻址的(即我们的程序中不可能出现获取所谓常量20的存储地址&20这样的表达式),虽然常量也是存储在内存的某个地方,但是我们没有办法访问常量的地址的。
常量是有类型的:
1、 字符型char:一个字节表示,通常表示单个字符或小整数,字符型常量用一对单引号‘ ’夹着一个字符表示。
(1)可打印字符常量表示:
‘a’ ‘2’ ‘,’ ‘ ’
字符常量在内存中的存储格式依赖于ASCП码表的。
(2)不可打印字符常量,通过斜杠“\”表示:
‘\n’ 换行符 ‘\\’ 反斜杠 ‘\t’ 水平制表符 ‘\0’ 空(NULL)字符
2、 整型int:一个机器字长度的整数值。
短整型short:半个机器字长度的整数值。
长整型long:一个或两个机器字长度的整数值。
在32位机器中,int和long通常相同。
(1)上面提到的char字符型,也可看作长度为一个字节的字符型整数。
通过下面这个小例子,可以看到char型数据,不同初始化方法,内存格式也是不同的。
char a=’1’;
cout<<a+1<<endl; //输出结果为50,参照ASC表,字符常量’1’在内存中是十进制数49
char b=1;
cout<<b+1<<endl;//输出结果为2
实际上,字符常量还可以初始化int、long等类型数据,例如:
int c=’1’;
cout<<c+1<<endl;//输出结果也是50
而:
char a=’1’;
cout<<a<<endl;//输出结果为1
int a=’1’;
cout<<a<<endl;//输出结果为49
这些区别需要引起我们的注意。
(2)整数常量可以使用十进制、八进制、十六进制表示,例如
20(十进制)024(八进制)0x24(十六进制,也可写做0X24,“x”大小写无所谓)
(3)整型常量可以有符号,也可以无符号,例如:
一个8位有符号char:-128~127
一个8位无符号char:0~255
说明:缺省的整型常量是int型的,我们可以使用”L”或”l”后缀强制把整型常量表示成long型,另外也可加后缀”U”或”u”指定成无符号数,例如:
128U、1024UL、1L、8Lu
3、 浮点型float:一个字长度的单精度浮点数
双精度double:两个字长度的双精度浮点数
长双精度long double:3个或4个字长度的扩展精度浮点数
(1) 浮点常量可以写成科学计数法或普通十进制数
(2) 浮点常量缺省为double型,可以加后缀“F”“f”“L”“l”修饰为单精度浮点数或扩展精度浮点数,但是只能修饰十进制表示的浮点数。还有跟整型常量不一样的地方是,浮点数部分正负,也就是说不能使用“U”“u”后缀。
例如:3.14159F 0.1f 12.345L 0.0 3e1 1.0E-3 1.0L
4、布尔常量boolean:true或false
5、字符串常量:比较特殊的一种类型,它不是内置或基本的数据类型,实际上就是字符常量数组,它由字符串文字本身以及编译器加上的表示结束的空(NULL)字符组成。
字符串常量“Ab”在内存中的实际格式是’A’’b’’\0’
如果程序中”two””Some”紧邻,C++编译器会把它们连在一起,并在最后加上一个空字符,即输出为”twosome”
字符串常量还可换行表示,只需在换行的地方加上“\”,例如:
“abc\
de\
fgh”
实际上就是表示”abcdefgh”

测试题:
1、 说明下列文字常量的区别:
(a)’a’ L‘a’ “a” L”a”
文字常量’a’表示单一字符,类型为char,L’a’也表示单一字符’a’,只不过它的类型是wchar_t,因为前导词L表示宽字符。
文字常量”a”表示字符串,包含单一字符’a’和空字符’\0’,L”a”也表示字符串,常量宽字符所表示的数组。
(b)10,10U,10L,10uL,012,0xA
均表示十进制数10,区别是表示进制不同以及具体类型不同
(c)3.14 3.14f 3.14L
均表示浮点数3.14,区别是具体类型不同。
2、 下列语句哪些是非法的:
(a) "Who goes with F\144rgus?\014"
合法,\144代表一个d字符,\014代表一个奇怪的字符
(b) 3.14e1L
不能用L修饰科学计数法表示的浮点数
(c) "two" L"some"
合法,但结果没有意义
(d) 1024f
合法
(e) 3.14UL
不合法,不能用U修饰浮点数
(f) "multiple line
comment"
不合法,换行要用\

相关了解……

你可能感兴趣的内容

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