您的位置:首页 > 编程语言 > C语言/C++

c++ primer 学习笔记 第二章 变量和基本类型

2015-02-05 23:51 615 查看


对于 unsigned 类型来说,编译器必须调整越界值使其满足要求。编译器会


将该值对 unsigned 类型的可能取值数目求模,然后取所得值。


为什么-1%256等于255?

取模运算时,对于负数,应该加上被除数的整数倍,使结果大于或等于0之后,再进行运算.
对于上例:
-1+256=255,然后用255%256,结果就是255.
当然也可以-1+512=511,511%256的结果也是255.


Exercise2.1:

int、long 和 short 类型之间有什么差别?

他们的表示数据范围有差别:
在c语言中:int 两个字节,也就是16位,所以它的范围是2^16-1有符号的是-2^15~2^15-1
short 一个字节,8位。范围类推啦;
long 4个字节,32位。
在c++中: int 四个字节;
short 2个字节;
long     -2^63 —— 2^63-1


Exercise2.3:

如果在某机器上 short 类型占 16 位,那么可以赋给

short 类型的最大数是什么?unsigned short 类型的最

大数又是什么?

short:

2^15-1 即32767

 

unsigned short:

2^16-1 即65535
Exercise2.5:

float 类型和 double 类型有什么差别?

基本上没有什么区别,都是表示小数
不过它们的宽度不一样,或者说精度不一样,float是单精度,double是双精度
它们表示小数的范围不一样,double能表示的范围,比float大
double在内存中,占8个字节,float占4个字节

float和double的关系就像short跟long的关系一样


Exercise 2.6:

要计算抵押贷款的偿还金额,利率、本金和付款额应分别选用哪种类型?解释你选择的理由。

利率可以选择 float 类型,因为利率通常为百分之几.一般只保留到小数点后 两位,所以 6 位有效数字就足以表示了. 本金可以选择 long 类型,因为本金通常为整数.long 类型可表示的最大整数一 般为 2^31-1(即 2147483647),应该足以表示了. 付款额一般为实数,可以选择 double 类型,因为 float 类型的 6 位有效数字可 能不足以表示.
换行符 \n                      水平制表符\t

纵向制表符 \v               退格符 \b

回车符 \r                       进纸符 \f

报警(响铃)符 \a        反斜线 \\

疑问号 \?                      单引号 \'

双引号 \"

Exercise2.10:

使用转义字符编写一段程序,输出 2M,然后换行。修改

程序,输出 2,跟着一个制表符,然后是 M,最后是换行

符。

#include "StdAfx.h"
#include <iostream>
#include "Sales_item.h"
using namespace std;
int main()
{
cout<<"2M\n";
cout<<"2\t"<<"M\n";
int i;cin>>i; //固定窗口在输入
return 0;
}


Exercise2.11:

编写程序,要求用户输入两个数——底数(base)和指数

(exponent),输出底数的指数次方的结果。

#include "StdAfx.h"
#include <iostream>
#include "Sales_item.h"
using namespace std;
int main()
{
int <span style="font-size:18px;">base</span>=0,exponent=1;
long result=1;
cout<<"请输入底数:\t";
cin>>base;
cout<<"请输入次方数:\t";
cin>>exponent;
for(int cnt=0;cnt!=exponent;++cnt)
result*=base;
cout<<base<<"的"<<exponent<<"次方等于:\t"<<result;
int i;cin>>i;
return 0;
}


次方输入过大就会产生数据溢出,得到1.#inf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: