序
已经用C++很久了~但是其实里面有很多特性还没有深入学习了解过~所以最近决定重温一遍C++~我一直觉得学习的语言不在于多~在于精~于是我选择了C++ primer来阅读~希望自己step by step~加油~!
tip2:对于unsigned类型的赋值问题,当对unsigned类型赋值一个大于它所能表示的数时,编译不会报错,他会使用这个数对取值数目取模,将取模后得到的值存入变量中;当对unsigned存储一个负数时,它保存的也是对取值数目取模后的结果。
tip3:floate能保存的精度是6位有效数字,而double是10位。
tip4:尽量用unsigned进行计数,因为她可以表示更大的范围,且不会出现负数;在浮点型中,尽量使用double类型,不仅精度高,在很多机器上,double计算比float快!
tip1:以0开头的字面值常量表示8进制。
tip2:字面值整型常量的默认类型是int,long,可以在常量后面加上L,表示long,加上u表示unsigned。
tip3:默认的浮点类型常量是double,在数值后面加上F(f)表示float类型,加上L表示long double。
tip4:在字符常量前加上L表示wchar_t类型。
tip5:转移字符的另类方式:\ooo(八进制),\xddd(十六进制)
tip6:字符串连接,相邻的有空格,指标符,换行符分开的字符可以连接。如"aaa" "bbb"="aaabbb"
tip7:如果有\多行符,那它必须是最后一个字符,不能有注释符哦!!
tip8:http://hi.baidu.com/kathyxiami/item/a2a9f28b9ff05d52e73d197c 关于double,float的表示精度。
编程提示:使用typeid可以得到变量类型,如下:
#include "iostream"
#include <typeinfo>
using namespace std;
int main()
{
if(typeid(-10e-2) == typeid(double))
{
cout<<"yes"<<endl;
}
return 0;
}
tip1:初始化分为2种形式:直接初始化和赋值初始化。
直接初始化:int a(100);
复制初始化:int a=100;
这两种方法第一种效率更高且更灵活,尤其在初始化类的时候,更能体现这两着的区别。
tip2:初始化与赋值是2种不同的操作!!!尤其在类中。
tip3:函数体内定义的内置变量不自动初始化,函数体外定义的内置变量都初始化为0。
tip4:注意下定义和声明的区别,定义也是声明。使用extern可以只声明不定义,但是如果extern中有初始化式就是定义了,如:extern double pi = 3.14;这就会分配内存空间。
tip5:const对象与普通对象的声明有区别,const对象默认为文件的局部变量。看如下例子:
普通变量:
//file_1.c
int counter;
//file_2.c
extern int counter;
++counter;
解释:普通变量在定义时不需要使用extern符号,因为它默认是整个程序可以访问的。
-------------------------------------------------------
const变量:
//file_1.c
extern const int counter = 100;
//file_2.c
extern const int counter;
for(int i = 0; i < counter; i++)
//........................................
tip6:非const引用只能绑定到同类型的变量,而const可以绑定到不同但相关的对象。
如:const int &r = 42正确,但int &r = 42;错误。
tip7:枚举。默认第一个枚举成员赋值为0,后面递增,可以自己设置初始值,枚举成员是常量。
tip8:枚举成员的值在初始化后不能改变。
tip9:class与struct唯一的区别是默认访问级别,class默认访问级别是private,struct是public。
tip1:头文件用于声明,而不用于定义,但是有3中特殊情况需要放在头文件中定义:
A.类定义
B.值在编译时就已知的const对象(P59页末,值得深究)
C.inline函数
tip2:<>是标准头文件,先在环境变量路径下找。""是自定义头文件,先在源文件所在目录下找。