问题 单项选择题

下面程序的输出结果是( )。
#include "stdio.h"
fun (x
int x
int y=0;
static int z=5;
z=x++,y++;
return(Z);

main()
int a=4,i,j;
for(i=0;i<2;i++)
j=fun(a++);
printf("%d",j);

A.0

B.3

C.4

D.5

答案

参考答案:D

解析: 本题在fun()函数中定义了一个静态局部变量z,在第一次调用此函数时,z被初始化为5,而以后的调用2都会保留上次调用后的值。主函数通过一个for循环,二次调用fun()函数,第1次调用实参表达式a++的值为4,执行z=x++,y++;语句,因运算符“=”的优先级高于“,”,故z的值为表达式x++的值,x++是先对z赋值再对x加1,则z的值为4。第二次调用实参表达式a++的值为5,返回结果也为5,所以最后输出结果是5。D为所选。

单项选择题
单项选择题