首页 > 试题广场 >

下面程序的输出是

[单选题]
下面程序的输出是:
#define f(x) x*x
#include<stdio.h>
main (){
  int a = 6, b = 2, c;
  c = f(a) / f(b);
  printf("%d", c); }
  • 3
  • 18
  • 36
  • 9
代码在遇到#define的定义时,是直接把#define定义的内容替换掉源代码里的内容,这里c=f(a)/f(b) 相当于用a*a替换f(a),b*b替换 f(b),并不是直接先运算a*a和b*b,而是相当于运算c=a*a/b*b;这样c=6*6/2*2=36了。
发表于 2015-09-04 15:22:26 回复(3)
C。
将宏表达式展开:c = 6*6/2*2=36.
发表于 2015-08-13 13:57:41 回复(5)
玛德脑抽 c=6*6/2*2 直接想成36 / 4了
发表于 2017-08-03 23:17:03 回复(0)
#define f(x) x*x f(6)/f(2)=>6*6/2*2为6*3*2 注意:1. /优先级高于* 2. 计算时,把宏当作表达式
发表于 2017-03-02 11:33:55 回复(0)
c = 6 * 6 / 2 * 2 = 36
发表于 2016-01-29 11:45:27 回复(0)
代码在遇到#define的定义时,是直接把#define定义的内容替换掉源代码里的内容,直接替换直接替换直接替换

发表于 2022-03-09 14:18:38 回复(0)
6*6/2*2 啊啊啊...脑子抽了直接等于9了
发表于 2021-01-12 21:53:10 回复(0)
c=f(a)/f(b) ;没有括号 a*a/b*b就从左到右依次计算6*6/2*2=6*3*2=36.
发表于 2019-08-06 18:08:14 回复(0)
重点是:原样替换,不允许自行添加括号!!!
发表于 2017-07-13 17:03:36 回复(0)
易错题:宏是原样替代,f(a)/f(b)=a*a/b*b=6*6/2*2=36
发表于 2015-11-03 16:48:02 回复(0)
宏是原样替代,f(a)/f(b)=a*a/b*b=6*6/2*2=36
发表于 2015-09-05 23:17:31 回复(0)
一点要注意,宏定义是在原地进行替换,替换后整体进行计算,不要局部化,
发表于 2024-09-22 13:01:21 回复(0)
main前面的int 呢?

发表于 2024-07-05 17:09:44 回复(0)
我去,脑袋一抽忘记c语言中运算要看看有没有括号啊,如果没有就要按照从左到右的顺序……
发表于 2022-11-18 21:41:33 回复(0)
妈的。。。
发表于 2022-03-22 19:32:41 回复(0)
真狗.

发表于 2022-03-04 19:33:08 回复(0)

遇见定义宏直接带入, 然后按照运算符优先级进行运算

发表于 2020-01-14 07:39:59 回复(0)
宏定义的要原样替代,不能多加括号
发表于 2017-03-11 10:47:25 回复(0)
skb头像 skb
宏定义只是进行简单的替换,对于题目来说即c=6*6/2*2;如果不想简单替换的话,需要加括号,即#define f(x) ((x)*(x))

发表于 2016-12-09 10:36:12 回复(0)
int main()
  8 {
  9     int a=6,b=2,c,f;
 10     c=fun(a)/fun(b);
 11     f=(a*a/b*b);
 12 
 13     printf("-----------------\n%d\n",f);
 14     return 0;
 15 }
~                      
求解析
发表于 2016-09-20 14:54:08 回复(0)