#define MUL(A,B) A*B
int main()
{
inta=1,b=2,c=3,d=0;
d=MUL(a+b,c);
printf(“%d”,d);
return0;
}
这个程序输出是什么,为什么我运行不了。。还有这个
harch[]=“WelcometoXiyounet”
char*p=ch;
printf(“%c%c”,*(p+2),*p+2);
第一个程序,结果是7,在线验证
http://codepad.org/kJcc95Hr
解释下,因为宏替换只是简单的字符串替换,所以MUL(a+b,c);被替换为a+b*c,先算b*c,而不是a+b,所以是7
第二个程序,结果lY,在线验证
http://codepad.org/62uwXciR
因为*(p+2)先指针移动2个,也就是第三个字符,再得到值,所以结果是Welcome...的第三个字符l
*p+2是第一个字符W+2,W的ascii码+2,是 Y,所以第二个输出Y
第二个是char 少打上了
程序要规范啊,少了好多空格看起来好别扭。
第一个为什么要用宏替换啊,你也太懒了吧
好像等于9吧,替换后是(a+b)*c