第二章解答

1. C++提供了哪些基本数据类型(Built-in type)?检查你计算机上各种类型数据所占内存空间的大小(字节数)
a. 整数类型:
  int 4字节,short int 2字节,long int 4字节
b. 实数类型:
  float 4字节,double 8字节,long double 8字节
c. 字符类型
  char 1字节
d. 逻辑类型
  bool 1字节
e. 空值型
  void 非sizeof操作数,void * 为4个字节
说明:以上是在Windows环境下、32位计算机上的结果。另外,整数类型和字符类型还有unsigned版本,与signed版本长度一样。void表示无值,所以也不存在长度问题,而void*表示无类型指针,只要是指针,一般情况下在32位机器上,都是4个字节,64位机器上是8个字节。

2.以下列出合法的字面常量(literal constant)及其类型
-5.23 double,1e+50 double,-25 int,20 int,.20 double,1e-5 double,-0.0e5 double,'/n' char,-000 int,'A' char,'5' char,false bool,'/r' char,'/f' char,"Today is Monday." C-style string,"/"" C-style string

3. 什么是符号常量?符号敞亮的优点是什么?
常量是指在程序执行过程中值不变的量,而符号常量是指有名字的常量。
符号常量的优点是:有利于增加程序的易读性、提高程序对常量使用的一致性以及增强程序的易维护性。

4. 如何理解变量?变量定义和声明的作用是什么?
在程序中,其值可以改变的量称为变量。
变量定义是指出变量的类型和变量名,另外还可以为变量提供一个初值。
本书所指变量的声明是非定义性声明,是声明一个已存在的变量。在使用一个变量时,若未见到它的定义,则需要对它进行声明。变量必须先声明、后使用。

5. 表达式是由操作符、操作数以及圆括号所组成的运算式。
表达式的作用是实施对数据的操作。

6. 操作符的优先级规定了相邻两个操作符谁先运算:优先级高的先运算,如果相邻的两个操作符具有相同的优先级,则根据操作符的结合性来决定先计算谁。

7. 类型转换规则基本精神就是“类型提升转换”,表达式中,长度小的类型向长度大的类型看齐,整数向实数看齐。另外,小于int的类型,如果int能表达其值,则提升至int,如果不够,则提升至unsigned int。
(1) 3/5先进行整数除法运算,结果为0,然后0*12.3,0提升至double(因为12.3默认是double类型)
(2) 10*5.2先运算,10提升至double。'a'先提升至int,与10*5.2的结果运算时再提升至double
(3) 3.0F*24L先运算,24L提升至float,运算结果与12U相加,12U提升至float

8.(1) (-b+sqrt(b*b-4*a*c))/(2*a)
(2) squrt(s*(s-a)*(s-b)*(s-c))
(3)(a*b)/(c*d)*3/(1+b/(2.5+c))+4*pi*r*r*r/3

9.(1) j%i==0
(2)'A'<=ch<='Z' || 'a'<=ch<='z'
(3)m%2==0
(4)n<100 && n%2==1
(5) a+b>c && a+c>b && b+c>a

10. 本题的提议很清楚。读者的预期结果应该是3,但实际结果是2。这是由于浮点数做运算会有些微误差,转换成int后,他是cut掉小数部分,而不是四舍五入(如果不转换成int,显示double结果,就四舍五入了)。而3.3/1.1的结果是2.999999xxx(xx代表不是9的个位数),转换成int时,就cut掉了尾巴。就成了2。

11. 这题的解法有很多种,一般面试书上最推荐的解法如下:
a=a^b;
b=a^b;
a=a^b;
这是通过位移运算得到结果,这个解法优于其它解法的原因是:不会有溢出问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值