2.1 int, long, long long, short都是整型,区别是最小尺寸不同,int和short为16位, long为32位,long long为64位。float和double都是浮点类型,float最小尺寸为6位有效数字,double为10位。
2.2 都应该选择double类型。
2.3 结果分别为:32, 4294967264, 32, -32, 0, 0
2.4 按2.3题目中代码测试即可。
2.5 (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: 浮点数0.1
2.6 第一组定义了两个十进制数9和7,第二组09错误,以0开头为8进制。
2.7 (a)转义序列,\145为e,\012为换行;
(b)3.41e1L: 扩展精度浮点数,为31.4;
(c)1024f:单精度浮点数;
(d)3.14L: 扩展精度浮点数3.14
2.8
#include <iostream>
using namespace std;
int main()
{
cout << "2\x4d\012";
cout << "2\tM\n";
return 0;
}
2.9 (a)输入运算符右侧不能定义变量;
(b)正确,但小数部分会被丢弃;
(c)定义多个变量不能直接用=连接;
(d)正确,但小数部分会被丢弃。
2.10 global_str: 空字符串;
global_int: 0
local_int: 未定义
local_str: 空字符串
2.11 (a)定义;(b)声明并定义;(c)声明。
2.12 (a)非法,double是类型名,不能作为变量名;
(b)合法;
(c)非法,变量名不能包含"-";
(d)非法,不能以数字开头;
(e)合法;
2.13 j的值为100。
2.14 合法,输出i为100, sum为45.
2.15 (b)不合法,引用必须绑定到对象,不能绑定到字面值和计算结果;
(d)不合法,引用必须初始化。
2.16 (a)合法,相当于给变量d赋值;
(b)合法,把i的值赋给d;
(c)合法,把d的值赋给a,但小数部分被丢弃;
(d)合法,效果和c相同。
2.17 输出10, 10。
2.18
#include <iostream>
using namespace std;
int main()
{
int a = 1, *pa = &a;
int b = 2;
cout << *pa << endl;
//改变指针值
pa = &b;
cout << *pa << endl;
//改变指针所指对象值
*pa = 3;
cout << b << endl;
return 0;
}
2.19 指针本身是对象,可以赋值拷贝,可以重新绑定到另外的对象;引用不是一个对象,无法令引用重新绑定到另外的对象;
指针无需有初值,引用必须在定义时赋值。
2.20 先定义了变量i并初始化为42,又定义了一个指针p1指向i,通过指针p1获得i的值,计算平方后重新通过p1赋值给i。
2.21 (a)非法,类型不匹配;
(b)非法,应改成 int *ip = &i;
(c)合法。
2.22 if (p) //判定p是否空指针
if (*p) //判定p所指向的对象是否为0
2.23 可以用 if (p)判断,p指向合法对象,则为真,否则为假。
2.24 void *可以存放任意对象的地址,所以p合法,lp非法是因为类型不匹配。
2.25 (a)ip为指向int的指针,i为int类型,r是绑定到i的引用;
(b)i为int类型,ip为指向int的指针,并初始化为空指针;
(c)ip为指向int的指针,ip2为int类型。
本文详细介绍了C++ Primer第五版中关于整型、浮点型的类型及其字面量的使用,包括不同类型的尺寸差异、浮点类型的选择、字面量的形式以及变量的定义与赋值规则。同时,讨论了转义序列、八进制和十六进制数字、指针与引用的区别和操作。
1171

被折叠的 条评论
为什么被折叠?



