请高手解释一下结果为什么是2 12

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:00:45
#include <stdio.h>
#define POWER(x) ((x)*(x))
void main()
{ int i=1;
while(i<=4)
printf("%d\t",POWER(i++));
printf("\n");
}

你把 POWER(x) ((x)*(x)) 宏展开不就知道了吗

因为你的宏是((x)*(x)) 也就是说你的power(i++)中的i++运行了两次,所以i加了两次:
第一次1*2 第二次3*4
明白??我自己觉得讲的好详细啊

靠。谁让你这么干的?
宏是没类型的,你让它作为%d输出?先赋值给整型变量再输出吧。