学习笔记所用
本文部分内容参考了: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类型