C语言.以下程序的输出结果是

来源:百度知道 编辑:UC知道 时间:2024/07/05 21:07:32
以下程序的输出结果是
int a,b;
void fun()
{a=100;b=200;}
main()
{int a =5,b=7;
fun();
printf(“%d%d\n”,a,b);}

拜托大家能够详细分析下,本人初学,
我的结果是100200.
求分析啊

结果是5 和7 的绝对不会是100 200

fun函数没有返回值

fun的a和b是基本变量;不存在像数组和指针似的传送的是地址 fun的a和b只是一个局部变量 结果肯定是57的

是这样的
首先 ,定义了a,b两个变量,分别给他们初始化为5和7,但是你调用的这个
fun()这个函数,就相当在初始化完a,b两个值之后重新给a和b赋值,即a=100,b=200,所以你后来的输出就是100200了

程序最先走的是main函数,所以你给a和b的值是5和7,后来又调用fun函数又赋值了一遍,就变成100和200了~你输出的结果没有分开写而是连着的,所以是100200

答案是57

如果手头有编译器的话自己试一下就清楚了。这种问题建议自己动手试验,这样才能学到东西。

这道题主要考的是变量作用域及局部变量隐藏全局变量两个问题。
1、fun()中访问到的是全局变量,它不会修改main()函数中定义的局部变量。
2、main()中定义的局部变量a,b隐藏了全局变量a,b。因此printf()打印的是局部变量而不是全局变量,也因此,此题的结果是57
3、在main()方法中可以通过::来访问全局变量,比如在main()中写以下语句就会打印出100200:printf("%d%d\n",::a,::b); (注:我是C++编译器中试的,忘记C语言是否有::这样的表示全局变量的符号)

结果是57

void fun()
{a=100;b=200;} //这里的a,b是局部变量,离开了fun()这个函数之后就无效了。