目录: 标题| 题干| 答案| 搜索| 相关
问题

有以下程序#define F(X,Y)(X)*(Y)main(){ int


有以下程序#define F(X,Y)(X)*(Y)main(){ int a=3, b=4; printf("%d\n", F(a++, ++b));}程序运行后的输出结果是A.12 B.15C.16 D.20

  • A12
  • B15
  • C16
  • D20
参考答案
参考解析:

本题主要考查宏的定义与替换。在C语言中,源程序允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”都用宏定义中的字符串去代换。本题中,程序定义了一个带参数的宏,宏被定义为两个参数的乘积。在主函数中,程序首先定义变量a和b,并分别赋初值为3和4,然后执行输出语句,要求输出的是宏计算的结果,分别用变量a和b作为宏的参数,F(a++, ++b)进行宏替换后为(a++)*(++b),根据自加运算符的特点,结果为3*5=15。因此,程序最后的输出结果是15,本题的正确答案选B。

分类:其他
相关推荐

1、有如下程序void f(int *x,int *y){ int t; t=*

有如下程序void f(int *x,int *y){ int t; t=*x;*x=*y;*y=t;}main(){ int a[6]={1,2,4,6,8,10},i,*p,*q; p=a;q=&a[5]; while(p<q) { f(p,q); p++; q--; } for(i...

2、有以下程序 void f(int x,int y) { int t; if

有以下程序void f(int x,int y){int t;if(x < y){t=x;x=y;y=t;}}main(){int a=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%dn",a,b...

3、下面程序的输出结果是main{ int x=3 ,y=6,a=0; whil

下面程序的输出结果是main{ int x=3 ,y=6,a=0; while(x++!=(y-=1) ) { a+=1; if (y<x) break; } printf("x=%d,y=%d,a=%dn",x,y,a);}A.x=4,y=4,a=1 B.x=5,y=5,a=1 C.x=5,y=4,a=1 D.x=5,y=4,a=3Ax=4,y=4,a=1 Bx=5,y=5,a=1 Cx=5,y=4,a=1 Dx=5,y=4,a=3

4、有以下程序void f(int x,int y){ int t, if(x<

有以下程序void f(int x,int y){ int t, if(x<y){t=x;x=y;t;}}main(){ int a=4,b=3,c=5; f(a,B) ;f(a,C) ;f(b,C) ; cout<<a<<","<<b<<",...

5、有以下程序#define P(a) a+avoid F(int x) { r

有以下程序#define P(a) a+avoid F(int x) { return(P(2)*x*x);}main(){ printf("%dn",F(1+3)); }程序的运行结果是A.10 B.34 C.64 D.编译出错A10 B34 C64 D编译出错

6、有以下程序 main() { int x=3,y=2,z=1; printf

有以下程序 main() { int x=3,y=2,z=1; printf("%d ",x/y&~z); } 程序运行后的输出结果是A3B2C1D0