/* 本例展现带参宏定义的一个易错点 */ #include <stdio.h> #define SQ_MACRO(y) ((y) * (y)) int SQ_FUN(int y) { return y * y; } int main() { int i = 1; printf("SQ_FUN:\n"); while(i <= 5) { printf("%d\t", SQ_FUN(i++)); } printf("\n"); i = 1; printf("SQ_MACRO:\n"); while(i <= 5) { printf("%d\t", SQ_MACRO(i++)); } printf("\n"); return 0; } /* output: SQ_FUN: 1 4 9 16 25 SQ_MACRO: 1 9 25 */ /* 在SQ_MACRO宏定义中。第一次循环时,i = 1,在VC中计算为1*1。 然后i进行两次自增变为了3....。在替它编译系统中可能是其它值 */
带参宏定义的一个易错题
最新推荐文章于 2022-05-30 20:07:41 发布