1、为什么C++有多种整型?
答:为了根据特定需求选择最合适的类型。
2、声明与下述相符的变量。
a.short整数,只为80
b.unsigned int整数,值为42110
c.值为3000000000的整数
答:
short rbis = 80;
unsigned int q = 42110;
unsigned long ants = 3000000000;
or long long ants = 3000000000;
//注意,不要指望int变量能够存储3000000000,另外,如果系统支持通用的列表初始化,可以这样。
shrot rbis = {80};
unsigned int q {42110};
long long ants {3000000000};
3、C++提供了什么措施来防止超出整型的范围?
答:
C++没有提供自动防止超出整形限制的功能,可以使用头文件climits来确定限制情况。
4、33L与33之间有什么区别?
答:
常量33L的类型为long,常量33的类型为int。
5、下面两条C++语句是否等价?
char grade = 65;
char grade = 'A';
答:
这两条语句并不真正的等价,虽然对于某些系统来说,他们是等效的。最重要的是,只有在使用ASCII码的系统上,第一条语句才将得分设置为字母A,而第二条语句还可用于使用其他编码的系统。其次,65是一个int常量,而'A'是一个char常量。
6、如何使用C++来找出编码88表示的字符?指出至少两种方法。
答:
char c = 88;
cout << c << endl;
cout.put(char(88));
cout << char(88) << endl;
cout << (char)88 << endl;
7、将long值赋给float变量会导致舍入误差,将long值赋给double变量呢?将long long值赋给double变量呢?
答:
这取决于这两个类型的长度。如果long为4个字节,则没有损失。因为最大的long的值是20亿。由于double提供了13位有效数字,因而不需要进行任何舍入。long long类型可提供19位有效数字,超过了double保证的13位有效数字。
8、下列C++表达式的结果分别是多少?
a. 8*9+2
b.6*3/4
c.3/4*6
d.6.0*3/4
e.15%4
答:
8*9+2=74
6*3/4=4
3/4*6=0
6.0*3/4=4.5
15%4=3
仔细想想
9、假设x1和x2是两个double变量,要将它们作为整数相加,在将结果赋给一个整型变量。请编写一条完成这项任务的C++语句。如果要将它们作为double值相加并转换为int呢?
答:
int pos = (int)x1 + (int)x2;
int pos = int(x1) + int(x2);
其实就是强制转换的两种方式。
int(a);和(int)a;
10、下面每条语句声明的变量都是什么类型?
auto cars = 15;
auto iou = 150.37f;
auto level = 'B';
auto crat = 'U'/U00002155;
auto fract = 8.25f/2.5;
答:
auto cars = 15;//int类型
auto iou = 150.37f;//float类型
auto level = 'B';//char类型
auto crat = 'U'/U00002155;//char32_t
auto fract = 8.25f/2.5;//double类型