#define 宏表达式,该如何解决
#define 宏表达式#define min(a,b) ((ab)?(a):(b))int main(){printf(%d\n,min(a++,5))//为什么结果是
#define 宏表达式
#define min(a,b) ((a<b)?(a):(b))
int main()
{
printf("%d\n",min(a++,5));//为什么结果是2,而不是3
return 0;
}
[解决办法]
那是a++与++a的区别了,前者是先利用a然后再++,后者刚好相反,先++,后利用a来判断
[解决办法]接着执行 (a++)
没错,但是应该是先输出a,再a++
[解决办法]a++不是先输出a,再++。
其本质是a自加后返回一个临时对象,它保存了a自加前的值。
其实这种操作符可以看作函数
[解决办法] (a++<5)之后a=2,然后取a++,先去a=2然后a++
[解决办法]a初始值是多少啊,初值为1结果就是2了哈
[解决办法]a++ 相对于 tmp = a; return tmp; a+=1;