前言
自己做的,如果有错误,大家提出来 = =
//2.1
问题1:能够储存的数的大小不同
问题2:一个可以储存负数,一个不能储存负数
问题3:精度不同,double所保留的小数点位数更多
//2.2
答案合理即可
//2.3
//2.4
32;4294967264;32;-32;0;0
给出代码,自己测试即可,第二个不同的电脑有不同的答案。
#include<iostream>
using namespace std;
int main()
{
unsigned u=10,u2=42;
cout<<u2-u<<endl;
cout<<u-u2<<endl;
int i=10,i2=42;
cout<<i2-i<<endl;
cout<<i-i2<<endl;
cout<<i-u<<endl;
cout<<u-i<<endl;
}
//2.5
(a)字符a,宽字符a,字符串a,宽字符串a
(b)10,16字符的10,宽字符的10,宽的16字符的10,八进制数字12,16进制数字C
(c)3.14,float型的3.14,long double 型的3.14;
(d)10,宽字符的10,小数10,0.1
//2.6
10进制和八进制的区别
//2.7
略
//2.8
cout<<”2\115\n”<<endl;
cout<<2<<endl;cout<<”\115”<<endl;
//2.9
1: 非法,先事先定义好,在输入进去;
2: int为整型变量,3.14是小数
3:这样只能定义salary,无法声明wage。必须先声明wage
4:小数点后面的会丢失
//2.10
string类的都是null
int的为一个随机的数
//2.11
(a)定义。因为它加了“=1024”,一旦赋值,就会无视extern;
(b)声明+定义。
(c)声明。因为使用了extern
//2.12
略
//2.13
i=100;j=100
优先看最近的,也就是100
//2.14
合法。I=100;和为45.
for中的i里面的i,与外面没关系,所以还是输出100!!!!!!
//2.15
一三正确。2不合法。引用不能是一个值。4不合法,因为引用必须有初值
//2.16
(a)合法,把3.14159赋给了r2和d
(b)合法,把r1的值给了r2和d
(c)合法,把r2的值给了i和r1
(d)合法,把d的值给了r1和i
//2.17
都是10;
//2.18
略
//2.19
略
//2.20
让i进行了平方
//2.21
第一个double错了,第二个没有加地址符,第三个正确
//2.22
if(p)
把地址作为条件,如果地址为空的,不执行。
if(*p)
把指针p所指向的值作为条件
//2.23
不能。是否指向是我们自己需要做的
//2.24
long和int不一样。
Void 可以存放任意的
//2.25
(a)ip为指针,i为整型变量,r为整型引用
其他同理
只需要注意int* p和int *p一样即可
//2.26
const必须有初值!
a错,没有初值b对
c对,d错。Sz为const
//2.27
(a) 第二个错,因为不能使一个值
(b) 对
(c) 都对。注意第二个,加了const就可以了
(d) 对
(e) 对
(f) 没有初始化
(g) 对
//2.28
(a) cp没有初始化
(b) 都没有初始化
(c) 没有初始化
(d) 没有初始化
(e) 没有初始化
//2.29
除了a都非法
//2.32
没有加&;
//2.33
d为指针
e为指针
g为引用
这仨错了
//3.24
略
//3.25
J为const int
K 为const int &
P为int *
J2为const int
K2为const int &
//2.36 答:运行结果为:a=4;b=4;c=4;d=4;
//2.37 答:a=3;b=4;c=3;d=4;
//2.38 答:const std::vector<int> ival(100);
auto a = ival[0];// a 为 int 类型
decltype(ival[0]) b =1;
// b 为 const int& 类型,std::vector<int>::operator[](size_type)const 的返回类型
auto c = 1;// c 为 int 类型
auto d = c;// d 为 int 类型
decltype(c) e;// e 为 int 类型,c 为 int 型
decltype((c)) f = e;// f 为 int& 型,因为(c)是左值
decltype(0) g;// g 为 int 类型,因为 0 是右值
其他题
略