【问题标题】:static local variable reseting itself - c静态局部变量自行重置 - c
【发布时间】:2017-01-14 01:07:18
【问题描述】:

我正在尝试使用一个静态变量,该变量在每次函数调用时都会递减,但它会不断重置自身(对于静态变量来说有点奇怪):

int func()
{
 static int x;
 x = 5;
 x--;
 return (x);
}

int main(int ac, char **av)
{
 int x;

 x = 5;
 while (x != 0)
  {
   printf("%i\n", func());
   x--;
  }
}

输出是:

5 5 5 5 5

您必须知道这是出于学校目的,我们的老师禁止我们在同一行声明和初始化变量。我们也不能通过参数传递它。

【问题讨论】:

  • x = 5; -- 不是 it 继续重置它的elt; 继续重置它!
  • 是的,但是如何在不重置自身的情况下声明它?
  • static int x = 5;???
  • 好吧,我不能。这是为了学校的目的。我们的老师禁止在同一行使用声明和初始化

标签: c variables static


【解决方案1】:

如果你不能倒数,那就数起来:

int func(void) {
  static int x;
  return 5 - x++;
}

用法:

for (int i = 0; i != 5; ++i) {
  printf("%d\n", func());
}

【讨论】:

  • 明智之举!谢谢
【解决方案2】:

你可以声明和初始化一个静态变量和多行如下:

static int x
= 5;

【讨论】:

  • “我们的老师禁止在同一行使用声明和初始化” 这就是答案! :D
  • 哈哈哈,太好笑了。
【解决方案3】:

有另一个静态变量来检查 x 之前是否已初始化:

int func()
{
  static int x, initialized; /* Both initially 0 */
  if (!initialized) { x = 5; initialized = 1; }
  x--;
  ...
}  

【讨论】:

    猜你喜欢
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2014-10-25
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多