- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++Primer (第四版)答案之第⼆章
2.1
都是整型,但是存储空间不⼀样。在32位机器上short有2个字节,int有2个字节,⽽long需要4个字节。由于存储空间不同,表⽰的范围
也不同。这⾥short和int的表⽰范围从-32768到32767,long的表⽰范围从-2147483648到2147483647
2.2
有符号数的最⾼位,⽤1表⽰负数,0表⽰正数,⽆符号数没有此规则。
2.3
32767,这是有符号的short。⽆符号的short的最⼤值是65535。
2.4
unsigned short表⽰0~65535,总共65536个整数,⽤100000来赋值,溢出,则实际的值是100000%65536=34464。
2.5
float和double都是表⽰浮点数,但是可以表⽰的有效数字不同,float的只有6位,⽽double的有10位。float⼀般32位,4个字
节,double⼀般64位,8个字节。
float和double的范围是由指数的位数来决定的。float的指数位有8位,⽽double的指数位有11位,分布如下:
float:1bit(符号位)+8bits(指数位+23bits(尾数位)
double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)
float的指数范围为-127~128,⽽double的指数范围为-1023~1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所
能表达的绝对值最⼩的数;⽽正指数决定了浮点数所能表达的绝对值最⼤的数,也即决定了浮点数的取值范围。float的范围为-2^128 ~
+2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是⼀个隐含着的“1”,由于
它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,共七位,意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,⼀共16位,同理,double的精度为15~16位。
2.6
参考2.5,如果为了安全和省事考虑,都⽤double。其实利率、偿还⾦额可以⽤float表⽰,太多的有效数字没有意义。
double的精度更⾼,如果对精度没有特别的要求,直接⽤float即可。
2.7
(a) a是char类型的字符,La是wchar_t类型的字符,后两个分别是相应类型的字符串,字符串⾥只有两个字符,⼀个是 ‘a’,⼀个
是\0。
(b) 10u表⽰⽆符号10,10L表⽰long类型的10,10uL表⽰unsigned long的10,012表⽰⼋进制,0xC表⽰⼗六进制。
(c) 3.14是普通浮点型的表⽰,3.14f表⽰float类型的浮点型。3.14L表⽰扩展精度的浮点型,⼩写的l也是这个意思。
2.8
(a) int 或者 short 或者 long
(b) -10u确实是unsigned int类型,居然是-10,实际输出是4294967286
(c) -10.是float类型或者double类型
(d) -10e-2 是float类型或者double类型
2.9
除了d,e,f是⾮法的,其余的都是合法的。
整数后⾯不能加f。
浮点型都是有符号的,没有⽆符号浮点型。
f的第⼆⾏,少⼀个双引号。
2.10
⾮常简单,就是要熟悉转义字符。
#include stdio.h
int main() {
printf(2M\n);
printf(2\tM\n);
return 0;
}
2.11
如果要输⼊⽐较复杂的数,利⽤pow函数⽐较好。
#include stdio.h
#include math.h
#include iostream
using namespace std;
int main() {
float a, b;
while (cin a b)
printf(%f\n, pow(a, b));
return 0;
}
但,这⾥本意是输⼊⽐较简单的数,来理解变量的运⽤。
#includ
文档评论(0)