Code Bye

#define 宏定义问题

#include<stdio.h>
#define abse(i) ( (i) >= 0 ? (i) : -(i) )
// 返回 i的绝对值的内联函数

int main()
{
int val,x=6;
val=(abse(x++));
printf(“%d\n%d\n”,val,x);
return 0;
}

输出结果是  7 和 8
想不明白啊!求解释

解决方案:20分
因为替换后变成了:( (x++) >= 0 ? (x++) : -(x++) )

所以x++被调用了两次,所以建议用内联函数,而不要用宏


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明#define 宏定义问题