2-1
(1)short, int, long, long long 的区别:
并且标准还要求这些类型满足:1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
(2)无符号类型和有符号类型的区别:
signed能够表示有符号的数,包括正数,负数,0
unsigned只能表示没有符号的数,包括正数,0
(3)float和double的区别是什么:
float是单精度浮点类型,通常占用32位
double是双精度浮点类型,通常占用64位
2-2
这些跟金钱相关的量可能是浮点数,因此使用double保存比较合适,特殊情况下可以使用long double
2-3
32
4294967264 这里涉及到复数转换为无符号数,可以直接用二进制补码计算。结论就是转换后的结果是负数加上该无符号类型的模值
32
-32
0
0
注意表达式中尽量不要混用无符号类型和有符号类型的变量,否则有符号类型会自动转换为无符号类型
2-4
#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;
system("pause");
}
2-5
(1)char,wchar_t,const char *,const wchar_t *
(2)int,unsigned int,long int,unsigned long int,八进制int,十六进制int
(3)double,float,long double
(4)int,unsigned int,double,double
注意默认的浮点数字面值是double类型
2-6
第二组定义错误,超出八进制表示范围,编译器会报错。
2-7
Who gose with Fergus?
1024F是错误的,1024是一个整数后面不能出现浮点数的后缀,可以改成1024.F
#include<iostream>