阅读下面的C语言程序,请给出正确的输出结果(  )。(2016年嵌入式系统设计师)
#include<stdio.h>
#define N 10
#define s(x) x*x
#define f(x) (x*x)
#define g(x) ((x)*(x))
main()
{  int i1, i2, i3, i4;
   i1=1000/s(N);
   i2=1000/f(N);
i3=f(N+1);
i4=g(N+1);
printf(“i1=%d, i2=%d, i3=%d, i4=%d\n”,i1,i2,i3,i4);
    }
A. i1=1000,i2=10,i3=21,i4=121
B. i1=10,i2=10,i3=121,i4=121
C. i1=1000,i2=1000,i3=21,i4=21
D. i1=10,i2二1000,i3=121,i4=21






参考答案:A
参考解析:本题考查宏概念,以及宏替换相关的基知识。  
表达式1000/s(N)宏替换后为:1000/10*10,因此结果为1000,而不是期待的10。  
表达式1000/f(N)宏替换后为:1000/(10*10),因此结果为10,是期待的结果。  
表达式f(N+1)宏替换后为:(10+1*10+1),因此结果为21,而不是期待的121。
表达式g(N+1)宏替换后为:((10+1)*(10+1)),结果为121,是期待的结果。  
因此,题中程序运行结果为“i1=1000,i2=10, i3=21, i4=121”。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接:https://scpro.cn/v/e28ffb78b77b11ee.html

相关文章

最近发表

好文推荐