卧龙小说网> > > 2.1.3节练习

2.1.3节练习

2.1.3节练习

2.1.3节练习

练习2.5:指出下属字面值的数据类型并说明每一组内几种字面值的区别:

(a) 'a' L'a' "a" L"a"

(b) 10 10u 10L 10uL 012 0xC

(c) 3.14 3.14f 3.14L

(d) 10 10u 10.10e-2

出题思路:本题考查的知识点是利用特殊的前缀和后缀指定字面值的类型。

解答:

(a)'a'表示字符a,L'a'表示宽字符a且类型是wchar_t,"a"表示字符串a,L"a"表示宽字符型字符串a。

(b)10是一个普通的整数类型字面值,10u表示一个无符号数,10L表示一个长整型数,10uL表示一个无符号长整型数,012是一个八进制数(对应的十进制数是10),0xC是一个十六进制数(对应的十进制数是12)。

(c)3.14是一个普通的浮点类型字面值,3.14f表示一个float类型的单精度浮点数,3.14L表示一个long double类型的扩展精度浮点数。

(d)10是一个整数,10u是一个无符号整数,10.是一个浮点数,10e-2是一个科学计数法表示的浮点数,大小为10*10^-2=0.1。

练习2.6:下面两组定义是否有区别,如果有,请叙述之:

int month = 9 day = 7;

int month = 09 day = 07;

出题思路:本题旨在考查十进制数字与八进制数字的表示方法。

解答:

第一组定义是正确的,定义了两个十进制数9和7。

第二组定义是错误的,编译时将报错。因为以0开头的数是八进制数,而数字9显然超出了八进制数能表示的范围,所以第二组定义无法被编译通过。

练习2.7:下述字面值表示何种含义?它们各自的数据类型是什么?

(a) "Who goes with F\145rgus?\012"

(b) 3.14e1L (c) 1024f (d) 3.14L

出题思路:本题考查的知识点是转义字符及利用特殊的后缀指定字面值的类型。

解答:

(a)是一个字符串,包含两个转义字符,其中\145表示字符e,\012表示一个换行符,因此该字符串的输出结果是Who goes with Fergus?

(b)是一个科学计数法表示的扩展精度浮点数,大小为3.14*10^1=31.4。

(c)试图表示一个单精度浮点数,但是该形式在某些编译器中将报错,因为后缀f直接跟在了整数1024后面;改写成1024.f就可以了。

(d)是一个扩展精度浮点数,类型是long double,大小为3.14。

练习2.8:请利用转义序列编写一段程序,要求先输出2M,然后转到新一行。修改程序使其先输出2,然后输出制表符,再输出M,最后转到新一行。

出题思路:本题旨在考查转义字符的使用。

解答:

#include <iostream>

int main()

{

std::cout << "2\x4d\012"; // 输出2M,然后换行

std::cout << "2\tM\n"; //输出2、制表符、M,然后换行

return 0;

}

主函数的前两行分别实现了题目中要求的两种输出形式。

其中,字符串"2\x4d\012"先输出字符2,紧接着利用转义字符\x4d输出字符M,最后利用转义字符\012转到新的一行。

字符串"2\tM\n"先输出字符2,然后利用转义字符\t输出一个制表符,接着输出字符M,最后利用转义字符\n转到新一行。

读者可以发现,输出同一个字符由多种方式可供选择。例如,可以直接输出字符M,也可以通过转义字符\x4d输出字符M;可以用转义字符\012换行,也可以用转义字符\n换行。


普通的冒险故事提示您:看后求收藏(卧龙小说网http://www.wolongxs.com),接着再看更方便。

好书推荐:《我的剧本世界在自主运行》《我是舰娘》《我的师妹是妖女》《交错世界之学院都市》《认清现实后,她们开始追夫火葬场》《好徒儿你就饶了为师伐》

目录