一直更新
语言特性方面:
1.注意类型转换树的问题
如 a+b
如果a,b是不同的数据类型,一定要注意其中隐式的类型转换问题
char->int->unsigned->float
一定要注意 unsigned要比int高级,int和unsigned碰到一块的时候是一起转成unsigned的。
比如下面这个程序
for(int a=-1;a<sizeof(t)/sizeof(t[0]);a++){
cout<<t[a+1];
}
的问题
a是一个int,而sizeof是unsigned的,所以在比较大小的时候,都要将其转换为unsigned的,所以a会变成很大的树,所以这个循环根本进不去。
算术运算会先隐式转换到相同类型再运算,结果的类型是转换后的类型。PC机子上的类型转换树参考: long double | double | float | unsigned long / \ unsigned int long \ int / | \ bool, char, unsigned char, short, unsigned short, 枚举类型等上面可以看到unsigned和int不在同一个树分支中,所以unsigned和int碰一起是一起转成unsigned long
所以 sizeof(a+b) a如果为a为unsigned,b为int的,这个sizeof之后是8!!!!!!!!!!!
2.智能指针的语法问题
3.const 和 #define 的区别