永发信息网

C语言程序问题

答案:4  悬赏:50  手机版
解决时间 2021-11-25 11:55
  • 提问者网友:嗝是迷路的屁
  • 2021-11-24 17:26
C语言程序问题
最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-11-24 18:06

#include"stdio.h"
int f(int a)
{ auto int b=0;
  static int c=3;
  b=b+1;
  c=c+1;
  return(a+b+c);
 }
main()
{ int a=2,i;
  for(i=0;i<3;i++)
    printf("%d
",f(a));
  }
  
  // 输出结果为7 8 9
  // 本题考查auto类型和static类型,i从0到2循环三次,每次循环中,
  // auto类型的b每次都是定义为0,然后加1,三次都没变化
  // static类型的c,由于不释放,第一次是3+1,第二次是4+1,第三次是5+1
  // 造成a+b+c的值成为7 8 9
全部回答
  • 1楼网友:舊物识亽
  • 2021-11-24 22:01
for 循环,确实没有什么用,因为只是将你的结果输出三次而已,
  • 2楼网友:几近狂妄
  • 2021-11-24 20:54
for实现了输出显示3个数。

auto定义的变量为 局部变量也称为自动变量,只在其所在的函数有效。
在变量前,加上关键字static,该变量就被定义成为一个静态局部变量。
这个函数打印3个不同的数,就是让你知道局部变量和全局变量的区别。
  • 3楼网友:不想翻身的咸鱼
  • 2021-11-24 19:19
auto加不加无所谓。C语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。
现在的声明变量一般自动是auto型。
static简单的说就是只能赋值一次 值改变了就改变了 运行到这一个语句也不会变(就相当于隐身了) 第一次调用 输出2+1+4 第二次2+1+5 然后2+1+6
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯