首先我要说的的是:
哎~~~~
你的程序风格真是糟透了!
不过看来你也是个新手,
也无可厚非
我帮你的程序整理了一下
看看
#include <stdio.h>
#define LOW 0
#define HIGH 5
#define CHANGE 2
int i=LOW;//注意这是全局变量
int reset(int);
int workover(int);
void main()
{
int i=HIGH;
reset(i/2);
printf("i=%d\n",i);
reset(i=i/2);
printf("i=%d\n",i);
i=reset(i/2);
printf("i=%d\n",i);
workover(i);
printf("i=%d\n",i);
}
int reset(int i)//这是reset函数的形参
{
i=i<=CHANGE?HIGH:LOW;
return(i);
}
int workover(int i)//这是workover的形参
{
i=(i%i)*((i*i)/(2*i)+4);
printf("i=%d\n",i);
return(i);
}
先看看我着重标出的三个参数,
它们三个的不同 我也注释在旁边
在main()函数中,当第二次执行reset(i=i/2)时,要注意
此时 i 是全局变量,它在做为实参传递之前,先做了一次运算,即i=5/2; 所以
全局变量i 的值现在变成2。而reset(int i),可知这是传值调用,虽然它的形参也是 i ,但是这个i 和全局的 i 是没有任何联系的,所以,在reset(int i)中,执行的操作,根本不会影响到全局变量i 的值。
所以全局变量i=2.