#include
#define PRINT(i, limit) do \
{ \
if (i++ < limit) \
{ \
printf("GeeksQuiz\n"); \
continue; \
} \
}while(1)
int main()
{
PRINT(0, 3);
return 0;
}
在上面的程序中, GeeksQuiz被打印了多少次?
(A) 1
(B) 3
(C) 4
(D)编译时错误答案: (D)
说明: PRINT宏在预处理器时间即编译时间之前被扩展。宏扩展后,if表达式变为: if(0 ++ <3) 。由于0是一个常数,并且仅表示r值,因此应用增量运算符将产生编译时错误:需要lvalue。左值表示具有某个地址的内存位置。
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。