一道c语言题目,第二题为什么选c?

第二题12是怎么来的

你好,这道题之所以选择C,是因为C是正确的,其他都是错误的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-19
楼上那个孩子已经解释得很好了。
宏定义,它的本质是编译器在预编译前,进行文本性的替换。
所以实际的运算语句变成了 i = ((i)*i+1)+2;
由于 i 的初值为3,所以这行运算的结果是 3*3+1+2 = 12。本回答被网友采纳
第2个回答  2020-11-19
宏定义调用时不对实参做任何计算
定义中(x)加了括号而y没有
所以替换后的式子是
i=(i*i+1)+2【代入i=3得12】
而不是i=(i*(i+1))+2【代入i=3得14】本回答被提问者采纳
第3个回答  2020-11-18
宏展开以后变成
int i=3;
i=((i)*i+1)+2;
注意,这里括号没有改变优先级,先算乘法再算加法
即 i = ((3) * 3 + 1) + 2 = (9 + 1) + 2 = 12