C语言,想问问这题为什么选A

如题所述

#define f(x) x*x
#include <stdio.h>
/*int main(){
int i;
i=f(2+2)/f(1+1);
printf("%d\n",i);
}
*///这是原题的代码
int main(){
int i;
i=2+2*2+2/1+1*1+1;
printf("%d\n",i);
}//这应是宏展开后的代码

我测试了一下,两种运行结果完全一致,都是10,答案可能有问题,你自己试试。

追问

想问问为什么展开是2+2×2+2,刚开始学C语言不太懂

大神能在问问这个第八题字符串最后的\0asdfs为什么只算一个字符

追答

1.宏展开,在大多数简单情况下可理解为替换。
2.\0是字符串的结束标志,当遇到\0时,这个字符串“结束”。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-31
2+2*2+2/1+1*1+1=10,结果选择B,宏定义是简单的代码替换,原样替换追问

想问问为什么展开是2+2×2+2,刚开始学C语言不太懂

大神能在问问这个第八题字符串最后的\0asdfs为什么只算一个字符

第2个回答  2016-12-31
答案是a?那个是2+2么?