#include<stdio.h>
#define prod(a,b) ((a>b)?a*a:b*b)
int prod1(int a,int b){
return ((a>b)?a*a:b*b);
}
int main(){
int p=0,q=-1;
int p1=0,q1=-1;
printf("%d ",prod(p1++,q1++));
printf("%d ",prod1(p++,q++));
return 0;
}
输出为:1 0
为什么不一样?宏定义与函数定义有何不同,为什么会产生不同的结果?不应该所有2个输出都等于0吗?