首页 > 试题广场 >

下列程序执行后的输出结果为()

[单选题]
下列程序执行后的输出结果为()
  • 36
  • 以上均不正确
  • 16
  • 30
使用有参宏定义时,形参要用括号括起来,改为#define sum(a,b,c) (a+b+c)答案为30,否则计算过程为i*i+(i+j)+j=16。
发表于 2017-07-24 21:51:21 回复(2)
编译器在编译时会将宏定义展开,i*sum(i, (i+j), j)被展开为 i*i+(i+j)+j。因此,若想宏定义sum(a, b, c)为a,b,c的和,应该定义为 # define sum(a, b, c) (a+b+c)
发表于 2017-10-16 14:21:39 回复(0)
宏替换后为i * i + (i + j) + j,即为3×3+5+2=16,选C。
发表于 2018-11-18 17:35:38 回复(0)
是少了个,嘛
发表于 2018-10-30 14:07:40 回复(1)
为什么我确是没看到  i*
发表于 2022-11-19 12:06:50 回复(0)
参数宏定义把sum(i,(i+j),j)替换成i+(i+j)+j,然后就是i*i+(i+j)+j把i=3,j=2带入得16.
发表于 2019-03-19 20:02:59 回复(0)
ccccc
发表于 2017-04-18 15:39:15 回复(0)
i*i+i+i+j+j=3*3+3+2+2=16
发表于 2023-11-10 11:11:57 回复(0)
宏定义计算一定要看清楚
发表于 2022-08-23 21:43:54 回复(0)
眼瞎,我确是没看到 i*
发表于 2023-04-13 18:42:09 回复(0)
建议加个逗号或者把b选项去掉

发表于 2022-10-17 20:21:03 回复(0)
太骚了没看见逗号
发表于 2021-11-17 16:15:09 回复(0)
宏是模板替换,不能看成函数。坑🕳️
发表于 2020-08-18 00:31:07 回复(0)
<p>应该是sum(i,(i+j),j),漏了个逗号</p><p><br></p>
发表于 2020-06-03 15:34:52 回复(0)

宏定义那是真的🐮🍺

发表于 2019-10-25 21:29:06 回复(0)
太骚了,宏定义看成了函数
发表于 2019-09-19 11:58:03 回复(0)
没有返回值啊 我的哥
发表于 2017-09-09 09:03:30 回复(0)