练习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) 字符, 宽字符, 字符串,宽字符串
(b) 整型,无符号整型, 长整型, 无符号长整型,八进制,十六进制
(c) 双精度浮点型, 单精度浮点型,扩展精度浮点型
(d) 整型,无符号整型,双精度浮点型, 单精度浮点型
练习2.6
下面两组定义是否有区别,如果有,请叙述之:
int month = 9, day = 7;
int month = 09, day = 07;
解答:
有区别。第一组是按照默认进制数,也就是十进制来进行赋值的。第二组是按照八进制的数来进行赋值的,不过“09”这个数对于八进制是个错误的数。
练习2.7
下述字面值表示何种含义?它们各自的数据类型是什么?
(a) "Who goes with F\145rgus?\012"
(b) 3.14e1L
(c) 1024f
(d) 3.14L
解答:
(a) \145 相当于字母e, \012是换行符。是字符串类型。
(b) 表示31.4。是扩展精度类型,long double
(c) 表示1024.00.是单精度类型。
(d) 表示3.14.是扩展精度类型。
练习2.8
请利用转移序列编写一段程序,要求先输出2M,然后转到新一行。修改程序使其先输出2,然后输出制表符,在输出M,最后转到新一行。
解答:
(1) cout << 2 << '\115' << '\n';
(2) cout << 2 << '\t' << '\115 << ''\n';
这里后面的几个也可以写成字符串的形式。
当然2也可以写成字符串的形式。