C++ Primer(第五版) 2.2.1--2.3.3节练习

本文详细介绍了C++ Primer第五版中关于整型、浮点型的类型及其字面量的使用,包括不同类型的尺寸差异、浮点类型的选择、字面量的形式以及变量的定义与赋值规则。同时,讨论了转义序列、八进制和十六进制数字、指针与引用的区别和操作。

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类型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值