C ++ Primer (第五版) 第四章习题练习

学习笔记所用
本文部分内容参考了:C++Primer第五版——习题答案+详解(完整版)

4.1

5+((10*20)/2)=105

4.2

a:*(vec.begin())
b:(*(vec.begin()))+1

4.4

#include 
using namespace std;

int main()
{
    int i = 12 / 3 * 4 + 5 * 15 + 24 % 4 / 2;
    cout << i;
    return 0;
}

4.5

a:-86
b:-18
c:0
d:-2

4.6

a%2==0

4.9

cp是指针,*cp是字符'H'
所以结果为True

4.10

#include 
using namespace std;

int main()
{
    int x = 0;
    while (x != 42) {
        cin >> x;
    }
    return 0;
}

4.11

if(a>b&&b>c&&c>d){

}

4.12

原式等价于:i!=(j<k)

4.13

a:i=3,d=3
b: i=3,d=3.5

4.14

第一个不合法
第二个将进入if语句

4.15

int *不能赋值给int
并且这里的pi没有初始化,不能进行操作

4.16

a:if((p = getPtr()) != 0)
b:if(i == 1024)

4.17

前置:先加1,后运算
后置:先运算,后加1

4.18

第一个元素将不输出,并且会输出第一个小于0的数

4.19

a:如果ptr不为空并且ptr+1不为空则返回true,否则返回false, 其中beg!=

4.21

#include 
#include 
using namespace std;

int main()
{
    vector<int> s = { 1,2,3,4,5,6,-1 };
	for (auto i = s.begin(); i != s.end(); i++)
	{
		*i = ((*i) % 2 == 0) ? *i : 2 * (*i);
		cout << *i << " ";
	}
    return 0;
}

4.22

#include 
#include 
using namespace std;

int main()
{
    int grad = 75;
    //1只使用条件运算符
    cout << ((grad > 90) ? "high" : (grad > 70) ? "pass" : (grad > 60) ? "low pass" : "fail");
    //2使用多个if语句
    if (grad > 90) cout << "high";
    else if (grad > 70) cout << "pass";
    else if (grad >= 60) cout << "low pass";
    else cout << "fail";
    return 0;
}

4.25

二进制:1111 1111 1111 1111 1110 0011 1000 0000
数:-7296

4.26

a: 00000011  3
b: 00000111  7
c: true
d: true

4.29

10  1

4.30

a: (sizeof x) + y
b: sizeof((p->mem)[i])
c: (sizeof a)<b
d: sizeof(f())

4.31

没有区别

4.32

遍历ia中的元素
循环5

4.33

someValue为真则x+1,y+1;否则x-1,y-1

4.34

a: float转换为bool
b: fval转换为int,然后和ival的和转换为double类型赋给dval
c: cval转换为int,然后和ival的积转换为double

4.35

a: 有,'a'转换为int,然后和3的和再转换为char
b: 有,ival转换为float.然后和1.0的积转换为unsigned int,之后差再转换为float
c: 有,ui转换为float,最后积再转换为double
d: 有,ival转换为float.然后和fval的和转换为double,然后和dval的和转换为char

4.36

#include 
#include 
using namespace std;

int main()
{
    int i = 3; double d = 3.14;
    i *= static_cast<int>(d);
    cout << i;
    return 1;
}

4.38

将j/i的解转换为double类型

你可能感兴趣的:(C++,Primer学习笔记)