C++Primer第五版 4.4节练习
2015-09-14 16:48
399 查看
练习4.13:在下列语句中,当赋值完成后i和d的值分别是多少?
int i; double d;
(a). d = i = 3.5;
(b) i = d = 3.5;
答: a. i = 3, d =3.0
b. d =3.5 I =3
练习4.14:执行下述if语句后将发生什么情况?
If (42 = i) // …//编译器报错,i是一个变量 ,42是一个常量,将变量赋值给常量,编译器报//错
If( i = 42)//… //括号里面 赋值后 i为42 不为0,条件为真,因此 语句继续执行
练习4.15:下面的赋值是非法的,为什么?应该如何修改?
double dval; int ival; int *pi;
dval = ival = pi = 0;
答:涉及到指针,ival = pi = 0,错误,pi是一个指针,类型是int *,ival是一个int型,因此不能赋值,修改方式是,首先指针需要被合理初始化,例如 int j = 1;int *pi = &j; deval = ival = *pi =0;
练习4.16:尽管下面的语句合法,但它们实际执行的行为可能和预期并不一样,为什么?应该如何修改?
(a) if (p = getPtr() != 0)
(b) if (i = 1024)
答:a里面赋值运算符的优先级相对较低 ,更好写法 if ((p = getPtr()) != 0)
b if (i == 1024)
int i; double d;
(a). d = i = 3.5;
(b) i = d = 3.5;
答: a. i = 3, d =3.0
b. d =3.5 I =3
练习4.14:执行下述if语句后将发生什么情况?
If (42 = i) // …//编译器报错,i是一个变量 ,42是一个常量,将变量赋值给常量,编译器报//错
If( i = 42)//… //括号里面 赋值后 i为42 不为0,条件为真,因此 语句继续执行
练习4.15:下面的赋值是非法的,为什么?应该如何修改?
double dval; int ival; int *pi;
dval = ival = pi = 0;
答:涉及到指针,ival = pi = 0,错误,pi是一个指针,类型是int *,ival是一个int型,因此不能赋值,修改方式是,首先指针需要被合理初始化,例如 int j = 1;int *pi = &j; deval = ival = *pi =0;
练习4.16:尽管下面的语句合法,但它们实际执行的行为可能和预期并不一样,为什么?应该如何修改?
(a) if (p = getPtr() != 0)
(b) if (i = 1024)
答:a里面赋值运算符的优先级相对较低 ,更好写法 if ((p = getPtr()) != 0)
b if (i == 1024)
相关文章推荐
- 项目1-c/c++语言中函数参数传递的三种方式
- C/C++程序员面试宝典-2
- C++Primer第五版 4.3节练习
- C/C++程序员面试宝典-1
- C++Primer第五版 4.2节练习
- C++Primer第五版 4.1.3节练习
- 第三周 项目1 - 顺序表的基本运算
- Implement strStr()
- C++拷贝构造函数(深拷贝,浅拷贝)
- 第2周项目2 程序的多文件组织
- 浅析C++中的函数与指针
- 基因数据压缩算法(ACTG) C++
- 顺序表(C++语言实现)
- 设计模式C++实现(10)——桥接模式
- 设计模式C++实现(9)——享元模式
- ffmpeg的安装&&在c++工程中引用ffmpeg类库
- 《Java编程思想》作者:C++不垃圾,只是Java很傲慢
- c++primer plus 第九章-名称空间
- C++中shared_ptr的使用
- C语言获取文件大小