回 帖 发 新 帖 刷新版面

主题:[讨论]这道题哪里有问题了?求高手

static int x=20;
void fun 1(int x)
{
x+=10;
printf("%d.....fun 1()\n",x);}
fun 2()
{
x+=10;
printf("%d.....fun 2()\n",x);}
main()
{
int x=10;
fun 1(x);
fun 2();
printf("%d.....main ()\n",x);}

回复列表 (共3个回复)

沙发

#include <stdio.h>

static int x=20;
void fun1(int x)
{
    x+=10;
    printf("%d.....fun 1()\n",x);
}

void fun2()
{
    x+=10;
    printf("%d.....fun 2()\n",x);
}

int main()
{
    int x=10;
    
    fun1(x);
    fun2();
    printf("%d.....main ()\n",x);
    return 0;

//lz是不是想问为什么是这个输出结果?

板凳


输出结果:三次分别是20,30,10.

3 楼

你问的是程序原理吧?
main里fun1(x)调用的是main中定义的x变量值10,所以fun1(x)=10+10=20;
main里fun2()没参数,所以调用的是全局变量中定义的x变量值20,所以fun2()=20+10=30;
第三行是直接输出main里定义的x变量值。

我来回复

您尚未登录,请登录后再回复。点此登录或注册