#include <stdio.h> #define PRINT(i, limit) do { if (i++ < limit) { printf ( "GeeksQuiz" ); continue ; } } while (1) int main() { PRINT(0, 3); return 0; } |
多少次 极客问答 上面的程序中打印了什么? (A) 1. (B) 3. (C) 4. (D) 编译时错误 答复: (D) 说明: 这个 打印 宏在预处理器时间即编译时间之前展开。宏展开后,if表达式变为: 如果(0++<3) 自从 0 是一个常量,只表示r值,应用增量运算符会产生编译时错误:需要左值。左值是指带有某个地址的内存位置。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END