有以下程序 int d=1; void fun( int p ) { int d=5; d += p++; printf("%d ", d ); } main() { int a=3; fun( a ); d += a++; printf("%d\

admin2019-06-09  19

问题 有以下程序
int d=1;
void fun( int p )
{
int d=5;
d += p++;
printf("%d ", d ); }
main() {
int a=3;
fun( a );
d += a++;
printf("%d\n",d); }
程序的输出结果是

选项 A、9 6
B、9 4
C、8 4
D、8 5

答案C

解析 代码考查点为全局变量和局部变量的同名问题,若全局变量和某个函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系。主函数执行fun(3)时候,执行调用函数fun,使用局部变量d=5,执行d += p++,相当于d=d+(p++),得到d的值为8,输出。函数调用结束,转到主函数,继续执行d += a++,此时d为全局变量,执行语句以后,d值为4。
转载请注明原文地址:https://jikaoti.com/ti/ldf0FFFM
0

最新回复(0)