练习4.1
答:105
练习4.2
*(vec.begin())
*(vec.begin())+1
练习4.3
答:可以接受,这样可以提高编译效率
练习4.4
答:((12/3)4)+((515)+(24%4)/2),最终值为91
练习4.5
答:a:-86,b:-18,c:0,d:2
练习4.6
if(a%2==0)
练习4.7
溢出指计算结果超出该类型所能表示的范围
short a = 32768;
short b = 32767;
b+=1;
short c = a + b;
练习4.8
答:相等性运算符优先级高于逻辑与、逻辑或。
练习4.9
答:先判断指针cp是否为空指针,若不为空指针,则判断cp指向的对象是否为空字符串
练习4.10
#include <iostream>
using namespace std;
int main()
{
int a;
while (cin >> a)
if (a == 42)
break;
return 0;
}
练习4.11
if(a>b&&b>c&&c>d)
练习4.12
答:先判断i是否等于j,然后返回布尔值,再与k比较大小
练习4.13
答:a:d = 3,i= 3;b:d = 3.5,i= 3;
练习4.14
答:第一句报错,表达式左侧必须为可修改的左值;第二句条件永远为真
练习4.15
答:pi为指针,不能被赋予常量,可修改为:
double dval;
int ival;
int *pi;
dval = ival = 0;
pi = ival;
练习4.16
答:因为赋值运算符优先级较低,所以通常需要加括号才能表达正确的意图
if((p = getPtr())!=0)
if(i==1024)
练习4.17
答:前置为先递增后赋值,后置为先赋值后递增
练习4.18
答:最后一次循环将会操作vector对象的尾后元素。
练习4.19
ptr!=0&&*(ptr++)
//第二句先判断ival是否为零,再判断ival+1是否为0
//第三句比较vector对象中ival的下一个对象是否小于第ival个元素
练习4.20
答:a合法指向vector对象的下一个元素;b合法,将iter值加一;c错误,应为(*iter);d合法,判断iter是否为空;e合法,将iter值加一;f合法,判断iter下一个元素是否为空
练习4.21
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> a = { 1,2,3,4,5,6 };
for (auto& b : a)
if (b % 2 != 0)
b *= 2;
return 0;
}
练习4.22
finalgrade = (grade>90)?"high pass":(grade>75)?"pass":(grade>60)?"low pass":"fail";
//
if(grade>90)
cout<<"high pass"<<endl;
else if(grade>75)
cout<<"pass"<<endl;
else if(grade>60)
cout<<"low pass"<<endl;
else
cout<<"fail"<<endl;
练习4.23
string p1 = s + ((s[s.size() - 1] == 's') ? " " : "s");
练习4.24
答:若成绩小于九十,则执行(grade<60)
练习4.25
答:10001110000000前面补0至32位
练习4.26
答:可能会导致位不够
练习4.27
答:a:011,b:111,c:1,d:1;
练习4.28
#include <iostream>
using namespace std;
int main()
{
auto a = sizeof(int);
auto b = sizeof(long);
auto c = sizeof(long long);
auto d = sizeof(unsigned);
auto f = sizeof(float);
auto g = sizeof(double);
auto h = sizeof(long double);
auto i = sizeof(short);
auto j = sizeof(char);
auto k = sizeof(bool);
auto l = sizeof(wchar_t);
auto m = sizeof(char16_t);
auto n = sizeof(char32_t);
cout << a << " " << b << " " << c << " " << d << " " << f << " " << g << " " << h << " " << i << " " << j << " " << k << " " << l << " " << m << " " << n << " " << endl;
return 0;
}
练习2.29
答:输出为10,2
练习2.30
答:sizeof(x+y);sizeof(p->mem[i]);sizeof(a)<b;sizeof(f())
练习4.31
答:逗号运算符首先对左侧表达式求值。然后将求值结果丢掉。
vector<int>::size_type cnt = ivec.size();
for (vector<int>::size_type ix = 0; ix != ivec.size(); --cnt)
{
ix++;
ivec[ix] = cnt;
}
练习4.32
答:遍历数组
练习4.33
答:someValue是否为1,是则递增xy,否则递减xy
练习4.34
答:a转换为布尔;b,ival转换为float,最后结果转换为double;c均转换为double
练习4.35
答:a,字符a转换为int;b,ui转换为double;c转换为double;d先转化为double再转换为char