发布时间:2014-06-18 15:52:42
1.使用括号确保表达式执行顺序: 表达式:x与1相与后判断是否等于0. 错误表达式:点击(此处)折叠或打开x & 1 == 0 因为==操作符的优先级高于&,表达式会先进行(1==0)操作,最后进行(x&0)操作。 正确表示:点击(此处)折叠或打开(x & 1) == 0 .........【阅读全文】
发布时间:2014-06-16 14:08:56
在C中,translation unit(翻译单元)也可称为compilation unit(编译单元),translation unit是C预处理后的输出,即一个源文件经过预处理后。经过translation unit后产生一个目标文件(比如.c通过编译产生.o文件)。预处理包括:1.扩张的源文件以递归方式用指令中申明的字面文件取代所有#include指令(通常是头文件,但.........【阅读全文】
发布时间:2014-06-16 13:17:43
1.声明对象的存储时间一个对象的存储时间决定了他的生存周期。有三种存储时间:static, automatic,allocated。错误代码:点击(此处)折叠或打开char const *p; void dont_do_this() { char const str[] = "This will change";.........【阅读全文】
发布时间:2014-06-11 14:58:09
1.用常量(const)或枚举(enum)来声明不可变值一般而言,用const来声明不可变值而不是用宏定义。使用const的话,编译器可以检查对象类型(float, double),对象范围等。对于整型常量,应使用enum(枚举)代替const,可以消除获取整型变量地址可能,同时避免为整型变量分配存储空间。点击(此处)折叠或打开.........【阅读全文】
发布时间:2014-06-10 16:24:02
1.宏的变量名加上括号()点击(此处)折叠或打开#define CUBE(I) (I * I * I)int a = 81 / CUBE(2 + 1); 宏扩展后点击(此处)折叠或打开int a = 81 / (2 + 1 * 2 + 1 * 2 + 1); /* evaluates to 11 */.........【阅读全文】