在代码没有改变的情况下,为啥运行结果有时可行有时不可行啊?明明没有改任何内容,难道是编译环境的问题吗?
可能是代码有bug,看不到代码,不好下结论
例如 你定义
#define mul(a,b) a*b
就像下面输出结果是41而不是66
int main()
{
int a=5,b=6;
int c=mul(a+b,b);
printf("%d\n",c);
}
mul(a+b,b)并不是按(a+b)*b 而是 a+b*b输出结果 并没有运算规则 他是完整的把a+b 传递给了a 其实说成没有运算规则不严谨 只是没有按照我们给他的设想去计算,它比较死,一股脑传递过去 自然成了a+b*b
#define mul(a,b) (a)*(b)
结果自然是66