1. 贪心法:每一个符号应包含尽可能多的字符。所以a+++b就不难理解了。
2. (*(void(*)())0)()的理解typedef void (*funcptr)(); (*(funcptr)0)()
3. 单目运算符---算术运算符---移位运算符---关系运算符---逻辑运算符
4. 只有&& ||?: ,保证最左到右的求值顺序。而y[i]=x[i++]不能保证先取y+i的地址
5. 两个有符号整数相加,溢出 a+b < 0,不正确,可以将a b都转化成无符号数进行判断。
6. 如果一个函数在声明或者定义前被调用,默认其返回值为整型
7. 如果一个函数没有float short char 类型的参数,在函数声明中完全可以省略参数类型的说明,函数定义中则需要有。
8. 一个输入操作不能紧跟一个输出操作(对同一文件),反之亦然。如需要,在中间添加fseek函数。 Fseek(fp,0,pos),虽然什么都没做,但是保证正常执行。
9. setbuf(stdout,buff)将stdout先写入buff,等写满或者调用fflush即可,注意:缓冲区释放
10. #define error() cout<<__FILE__<<endl<<__LINE__<<endl;
11. 无符号右移,高位用0补上;有符号,不确定。移位的范围为0~位数-1;用移位替代除法
12. n=-n 注意,如果n为负数,则有可能出现问题。-2^N ~ 2^N -1