#define 定义问题
#include <stdio.h>
#define fun(a) a++;a *= 10
int main(void)
{
int i = 10;
i = fun(i);
printf("\ri = %d\n",i);
}
结果为100,
那定义中的a++起什么作用呢?是不是就没有用.
谁能指点一下
[解决办法]
i=i++ ;这条语句存在几个序列点。编译成汇编指令后,不同的编译器编译的指令代码的次序不同,导致结果不同
[解决办法]
上面只有5楼的解答是正确的。
这个要涉及序列点和副作用的知识,看看C++标准即可。
i=i++;只有一个序列点和一个副作用。所以i的值可能是10或者11。
更加具体的还是用GOOGLE学习吧!
[解决办法]
同意楼上,历史问题!!!
[解决办法]
这跟编译器的种类有关