第一章 开始
遇如下输入语句,如何结束输入跳出循环呢——输入文件结束符(或输入错误,比如不是int型)——WINDOWS系统中,输入结束符的方法:
Ctrl + Z
,然后enter or return
键。 UNIX(包括Mac OS X)系统中,Ctrl + D
.while (cin >> value) { sum += value; }
每个类实际上都定义了一个新的类型,其类型名就是类名。而类型后面的就是一个属于该类型的变量。如定义了一个类Sales_item,则定义一个类类型的变量:
Sales_item item;
item 是一个Sales_item类型的对象。
#include
包含来自标准库的头文件时,用尖括号<>
包围头文件名,否则用双引号""
包围。文件重定向:这种机制允许我们将标准输入和标准输出与命名文件关联起来
$addItems <infile >outfile
假定$是操作系统提示符,加法程序已编译为addItems.exe的可执行文件,则上述命令会从一个名为infile的文件读取销售记录,并将结果写入到一个名为outfile的文件中,两个文件都位于当前目录。成员函数是定义为类的一部分的函数,有事也被称之为方法。如:
Item.isbn();
// .点运算符只能用于类类型的对象。左边是对象,右边是成员名,效果是调用该类型的函数,()是调用运算符,里面放置实参列表(可为空)。
第二章 变量和基本类型
基本数据类型(内置类型):算数类型、空类型(不对应具体的值)
算数类型:整数型(包括字符、布尔值)、浮点型
内置基本类型:整数型(包括字符、布尔值)、浮点型、void、枚举;int、short、long、long long
都是带符号的,在前添加unsigned
为无符号类型,unsigned int
可缩写为unsigned
。字符型分为三种:
char、signed char、unsigned char
。char
有无符号由编译器决定。float
为单精度浮点型,有效数字为6~7位;double
为双精度,有效数字为15~16; 但他们在输出时,小数点后都有6位小数。
float
有效位的解释:从左往右数,前6位一定是有效的(精确),所以精确度是6位。意思是前6位一定精确,6位以后的可能精确,可能不精确。如何选择类型的几点注意:
- 当明确知道述职不可能为负时,用
unsigned
int
和long
尺寸相同,所以超出int
范围时,用long long
char
由于机器不同所表现的类型不同,容易出问题,所以尽量明确指定是signed char
或者unsigned char
- 执行浮点数运算选用
double
,float
经常精度不够并且与double
的计算代价相差无几,但long double
的消耗很大。
- 当明确知道述职不可能为负时,用
当给无符号类型一个超出范围的值时,结果是对该值对无符号数值总数取模后的余数。例如
unsigned char c = -1; //c=255;
数学角度:
-1对256求模mod(-1,256)
取模运算时,对于负数,应该加上被除数的整数倍,使结果大于或等于0之后,再进行运算.
也就是: (−1)%256=(−1+256)%256=255%256=255 ( − 1 ) % 256 = ( − 1 + 256 ) % 256 = 255 % 256 = 255计算机角度:
计算机中负数是以补码形式存储的,负数的补码是对应正数的原码取反加1得到,-1的补码11111111,转换成无符号数即是255的二进制编码。
注释:通常,取模运算也叫取余运算,它们返回结果都是余数.rem(取余)和mod(取模)唯一的区别在于: 当x和y的正负号一样的时候,两个函数结果是等同的;当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。取余运算在取商的值时,向0 方向舍入(fix()函数);而取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。
当一个算数表达式中既有无符号数又有有符号数(如int)值时,那个int值就会转化为无符号型。例如:
unsigned a=10; int b=-1;
a+b的值是-1转化为unsigned值后再加上10.
字面值常量
整形字面值:20十进制 020八进制 0x2 十六进制
默认情况下,十进制是带符号数,八进制和十六进制即可能是带符号的,也可能是无符号的。类型short没有对应的字面值。
严格来说,十进制字面值不会是负数。-10的负号并不在字面值之内,是对字面值取负值。
默认的,浮点型字面值是double。‘a’ //字符字面值 char “abcdef” //字符串字面值 以空字符‘\0’结尾,实际长度比内容多1. true,false //布尔字面值 nullptr //指针字面值
变量 提供一个具名的、可供程序操作的存储空间。变量和对象一般可以互换使用。
string
是一种库类型,表示一个可变长的字符序列 string book(“0-201-78-X”);初始化不是赋值,初始化是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除而以一个新值来替代。初始化方式有以下四种:
int a=0; int a={