读书人

变量求值,该如何处理

发布时间: 2012-10-17 10:25:47 作者: rapoo

变量求值
以下程序的输出结果是多少呢?
int a=2;
int f(int *a)
{   
return(*a)++;
}

void main()
{ 
   int s=0;  
  {
int a=5;   
  s+=f(&a); 
   }
    s+=f(&a);
    printf("%d %d\n",a,s);
}



主函数中的一对大括号是什么意思呢?
在主函数中的a与全局变量a应该不一样吧?第一次调用f传进去的事哪个a啊 第二次呢?

[解决办法]

C/C++ code
#include <stdio.h>int a = 2;    /* 全局变量a初始化为2 */int f(int* a){        return (*a)++;}int main(int argc, char* argv[]){     int s = 0;      {        int a = 5;    /* 局部块变量a初始化为2 */           s += f(&a);    /* s加上局部块变量a的值2,然后局部块变量a自加1后为6 */    }    s += f(&a);    /* s加上全局变量a的值2,然后全局变量a自加1后为3 */    printf("%d %d\n", a, s);    return 0;}
[解决办法]
{
int a=5;
s+=f(&a);
}
这里是 s=0+5 其中f(&a) 传进去的是a
在函数中return (*a)++ 即return 5 然后a=6(局部变量)
s += f(&a); 传进去的是全局变量a(a=2) 所以s=5+2
[解决办法]
C/C++ code
int a=2;int f(int *b) //形参参数可以随便定义吧,改成b就好懂了{       return(*b)++;}void main(){    int s=0;     { //不加括号试试    int a=5;       s+=f(&a); //此处 a= 5    }//作用域结束    s+=f(&a); //此处a = 2    printf("%d %d\n",a,s);} 

读书人网 >C语言

热点推荐