1. p16
C++ 旧风格 头文件 以.h结尾 新式风格 没有扩展名 需要使用 namespace std
访问 名称空间std 四种方法:
using namespace std 放在函数定义之前
放在特定函数中
使用 using std::cout 使用制定元素如 cout
不使用using指令 使用前缀std::
2. p19
控制符 endl 重启一行
换行符 \n
用引号括起的字符串时,通常用\n,其他用endl
3.p39
位与字节
计算机内存基本单位 位(bit)
字节 8bit
c++工具检查类型长度 运算符sizeof 和头文件 limits
#include <climits> or <limits.h>
INT_MAX SHRT_MAX LONG_MAX LLONG_MAX p41
sizeof(int)
64位win7 系统
int 4bytes short 2bytes long 4 longlong 8
4.p43
无符号类型 即short 表示 -32768 到 32767 无符号 为 0 到 65535
用关键字 unsigned
如果超出了限制,其值将为范围另一端的取值
5. p54
const 限定符 来修改变量声明和初始化
一种常见的做法就是将名称的首字母大写 const int Months = 12;
或者 将整个名称大写 MONTHS
或者 是以字母k打头 kmonths
疑问:const 和 define 区别
6. p59
cout.setf(ios_base::fixed,ios_base::floatfield) ios_base::fixed是设置cout为定点输出格式 ios_base::floatfield是设置输出时按浮点格式,小数点后有6位数字
7.p60
除法 如果其中只有一个或者两个操作数是浮点值,则小数部分将保留,结果为浮点数。
8.p 64
当运算涉及两种类型时,较小的类型将被转换为较大的类型,
否则,说明操作数都是整数,因此执行整形提升
9.p65
强制转换
(long)thorn c
long(thorn) c++
强制转换类型不会修改thorn变量本身,而是创建了一个新的、指定类型的值,可以在表达式中使用这个值。
10.p65
static_cast<>可用于将值从一种数值类型转换为另一种数值类型
static_cast<long>(thorn)
11.p66
auto 编辑器将把变量的类型设置成与初始值相同
auto n = 100;//n is int
auto 处理复杂类型 自动类型推断的有时才能显示出来,,
疑问 auto
12.p73
数组初始化规则
只有在定义数组才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组
int cards[4] = {2,6,8,10};// ok
int hand[4];//ok
hand[4] = {3,3,2,5};//not
hand =cards //not
然而,可以使用下标分别给数组中的元素赋值。
可以提供的值少于数组的元素数目,其他元素为0
如果提供的方括号内为空, C++编译器将计算元素的个数 (但是让编译器去做 是件很糟糕的事情)
建议: short things[] = {1,5,2,5};
int num_elements = sizeof things / sizeof(short);
{} 中禁止缩窄转换 (浮点转整型 ,超出范围)
13.p74
疑问:书上说 初始化数组 为嘛必须要用static ???
老的编译器不支持(auto变量)数组声明时初始化, 所以必须加上static 现在的编译器都支持 int a[5]={1,2,3}; 自动变量初始化,所以不必非加上static 至于一定要问有什么作用,估计就是为了兼容以前的老编译器,还有,就是你看得书实在是太老了,作者当时只能这么写,因为编译器不支持没static的数组初始化.
14.p78
cin.getline() 参数1:存储输入行的数组名称 参数2:要读取的字符数
get()接受的参数相同,但是get()并不再读取并丢弃换行符 而是将其在输入队列中。 get(name,20).get();
查看下一个输入字符,如果是换行符,说明已经读取了整行,否则说明该行还有其他输入。
疑问 :17章
15.p83
string类简化了字符串合并操作,可以使用运算符+将两个string对象合并起来,还可以使用运算符+=将字符串加到string对象的末尾。
string str3;
str3 = str1+str2;
str1 +=str2;