本章开始讲解了一些简单的语法规则,以及c++和c的区别,自己简而言之记录了一些有争议的或者看了有歧义的,常规语法就略之

1、++i(先进行自加,再带入运算) 和 i++ (先运算,再自加),验证结果如下

2、switch后可以跟整数(字符也可以,因为内存里字符也是按照整数存储的,一 一对应)

3、c++编程思想里认为内建数据类型只有四个:char ,int ,float 和 double

  而bool类型是标准c++加进来的,最好用true 和flase ,不用隐式将int转换为bool(这正是平时最常用的)

  long ,short ,signed ,unsigned 被认为是说明符

  但是平时我们认为的八大基本类型是:byte ,short ,int ,long ,float ,double ,bool ,char 

4、像函数传递值时,在函数内部生成一个拷贝,这个是“按值传递”,外部变量值没变

  我们可以通过指针和引用来改变,实际指针和引用都可以理解为外部变量的别名 

5、不能使用void型引用,void型指针可以,而且意味着任何类型的指针都可以间接的引用那个指针地址

  如:void *p;  *((int *)p) = 3;但是由于自由转换,可以再转成char *,改变内存,可能引起崩溃,但是很多时候用的,比如多线程的的时候

6、c规定在作用域开始处就定义所有变量,但是c++可以在作用域任何地方

7、static 作用:a 只在第一次调用时初始化,后面值在之前基础上处理,而且在函数外不可用 b引申于前面,在文件最开始的时候static申明,其他文件extern也没   用,避免命名冲突 ,此外,static是内部链接,extern是外部链接

8、字符型和常数对应关系

9、volatile 防止编译器优化

10、优先级实在多,且不同语言的优先级会不一样,所以记得一个最基本,其余的可以查表

基本的优先级需要记住:
指针最优,单目运算优于双目运算。如正负号。
先乘除(模),后加减。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
逻辑运算最后计算。
 
11、位移之后舍弃的位可以左旋或右旋,机器级是有的,c++/C是建立最小的语言,因此舍弃,可以自己实现
 
12、c++显示转换:
1)、static_cast:static_cast类型转换用于相关类型之间的转换
(a)父类和子类之间的转换。
(b)用于基本数据之间的转换,如:把int转成char。
(c)空指针转与目标类型的指针之间的互相转换
2)、const_cast:这个运算符可以用来去除一个对象的const或volatile属性,type-id必须是一个指针或者引用。
3)、reinterpret_cast:最不安全的一种方式,完全不同类型转换,如将一个十六进制整数转换为内存地址(由int-->指针类型,这两种类型完全不关联)。既然是用于不相关类型之间的转换,也就意味着编译器不会做太多的确认和承诺。reinterpret_cast方式还有一个特点就是:目标和原始值之间至少有相同的位数,我们可以将转换之后的值再转换回去,而不像其它3种类型可能会导致精度丢失。
4)、dynamic_cast:一种运行时(run-time)检测的类型转换,因此转换可能需要较大的运行时代价,这种类型也是用C-style是无法实现的。主要用于执行类型向下转换和继承之间的转换。安全类型向下转换,这个后面细讲
 
写代码的小熊猫,开开心心每一天,(*^@^*)