首页 > 试题广场 >

下面程序执行后的输出值为( ) #...

[单选题]
下面程序执行后的输出值为()
#define  SUM(x) 3*x*x+1
int main() {
    int i=5, j=8;
    printf("%d\n", SUM(i+j));
    return 0;
}


  • 64
  • 508
  • 420
  • 其他几项都不对
直接把表达式中的x替换为i+j
即3*i+j*i+j+1=3*5+8*5+8+1=64
发表于 2019-03-08 16:47:38 回复(3)

#define宏定义是直接替换(不用在乎括号 直接带入进去)

所以S(i+j)是4*i+j*i+j+1(没有括号),所以结果是4*6+8*6+8+1=81

发表于 2019-02-12 21:50:11 回复(2)
在程序编译前的预处理阶段,对所有使用到宏的地方进行替换
在程序编译前的预处理阶段,对所有使用到宏的地方进行替换
在程序编译前的预处理阶段,对所有使用到宏的地方进行替换
只是替换,不会运算
替换后的式子为: 3*5+8*5+8+1 = 64
发表于 2020-07-30 11:13:21 回复(0)
带入为3*5+8*5+8+1=64
发表于 2018-12-21 18:09:04 回复(3)
宏定义直接替换,不管括号,第二次碰到了。。。
发表于 2022-03-17 17:54:35 回复(0)
#define宏定义是直接替换,不做具体运算 在这里直接用i+j替换x得 即3*i+j*i+j+1=3*5+8*5+8+1=64
发表于 2021-11-01 12:07:57 回复(0)
先展开而不是先计算
发表于 2021-10-07 16:31:48 回复(0)
答案是A
发表于 2020-08-28 19:36:53 回复(0)
宏定义中运算时的优先级()>  ++ > * > +
发表于 2020-02-26 11:10:49 回复(0)
在程序编译前的预处理阶段,对所有使用到宏的地方进行替换,只是替换,不会运算,因此不会先计算(i+j),而是直接替换,再根据加减乘除优先级依次计算
发表于 2022-06-22 14:26:23 回复(0)
宏定义是先展开再计算,不是先计算。
发表于 2022-02-11 11:07:28 回复(0)
3*i+j*i+j+1 = 3*5 + 8*5 + 8 + 1 = 64,直接把 x 替换成 i + j,因为没有括号,所以优先级按照运算符的优先级顺序来即可。
发表于 2021-05-14 08:41:56 回复(0)
我把“()”括号也替换了
发表于 2023-05-25 20:42:35 回复(0)
3*x*x+1 不是直接替换:3*(i+j)*(i+j)+1 而是不需要括号:3*i+j*i+j+1
发表于 2022-12-12 11:31:47 回复(0)
直直接代录计算
发表于 2021-10-25 16:28:15 回复(0)
直接把x替换为i+j,不带括号直接计算就ok
发表于 2021-05-30 16:45:40 回复(0)
<p>口算没过关……好气哦</p>
发表于 2020-05-05 17:38:13 回复(0)