niusouti.com
更多“有以下程序#define F(X,Y)(X)*(Y)main(){int a=3,b=4; printf("%d\n",F(a,b)); }程序运行后 ”相关问题
  • 第1题:

    有以下程序includedefine F(X,Y)(X)*(Y)main(){int a=3,b=4;printf("%d\n",F(a++,b++

    有以下程序 #include<stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); 程序运行后的输出结果是

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a++) *(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。

  • 第2题:

    有以下程序:includedefine F(x,y) (x)*(y)main(){int a=3,b=4; printf("%d\n",F(a++,

    有以下程序: #include <stdio.h> #define F(x,y) (x)*(y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } 程序运行后的输出结果是( )。

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:本题考查带参数的宏定义。对F(a++,b++)展开后,宏的返回值为3×4=12,这里a++,b++都是先使用变量值,再自增。

  • 第3题:

    有以下程序:include define F(X,Y)(X)*(Y)main(){int a=3,b=4;printf("%d\n",F(a++,b

    有以下程序: #include <stdio.h> #define F(X,Y)(X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } 程序运行后的输出结果是( )。

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:在程序中先将表达式中的宏替换掉,则输出语句中的表达式为(a++)*(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。所以,4个选项中选项A符合题意。

  • 第4题:

    有以下程序#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


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

  • 第5题:

    有以下程序 #define F(X,Y)(X)*(Y) main() {int a=3,b=4: printf("%d\n",F(a++,b++)); } 程序运行后的输出结果是( )。

    A.12

    B.15

    C.16

    D.20


    正确答案:A
    解析:此题考查的是编译预处理命令以及自加运算符。F(a++,b++)先取a和b的值,参加运算,再把a和b的值分别加1,所以F(a++,b++)=F(3,4)=3*4=12。