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),接着再看更方便。
好书推荐:《我的剧本世界在自主运行》、《我是舰娘》、《我的师妹是妖女》、《交错世界之学院都市》、《认清现实后,她们开始追夫火葬场》、《好徒儿你就饶了为师伐》、