Elinahaha 2015-09-29 12:10 采纳率: 0%
浏览 1444

关于C语言中的static变量的问题

下面的代码最终结果为什么是-10?去掉这个函数中的static则结果是-2可以理解,请教一下加了static后这个变量在函数的多次调用中是如何变化的

int fun()
{
static int a = 1;
return ++a;
}

int main()
{
int b;
b = fun()-fun()*fun();
printf("%d\n",b);
return 0;
}

  • 写回答

8条回答 默认 最新

  • runjiu 2015-09-29 12:16
    关注

    这个跟static无关,跟计算的顺序有关,首先第一个fun=2进入堆栈,但是,由于后面是减号,应该先计算乘法,fun数值为2在堆栈中,
    后面的乘法好理解一个是3,一个是4,最终的结果是2-3*4=-10

    评论

报告相同问题?

悬赏问题

  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?