【问题标题】:How to initialize a variable once in an if statement and use it outside the if statement如何在 if 语句中初始化一个变量并在 if 语句之外使用它
【发布时间】:2012-12-14 15:12:07
【问题描述】:

我正在尝试仅使用特定值初始化 int 一次并重复使用它。

void some_method(int par){
    int ch=1;
  if (ch==1){
    int x = par;
  }
  int y = x + 2;
}

我知道这段代码肯定行不通,因为x 只在 if 语句的范围内。 some_method() 在 while 循环中被重复调用,所以如果我在 if 语句之外声明 x 那么每次调用 some_method() 时,默认为零。我只希望x 保持不变。我曾想过让x 成为一个全局变量,但我确信一定有比这更好的解决方案。任何建议都会有所帮助!

谢谢。

【问题讨论】:

  • 使用静态关键字:static int x = some value;...

标签: c variables scope constants global


【解决方案1】:

这可以通过static 变量来完成:

void some_method(...)
{
  static int initialized = 0, x;

  if(!initialized)
  {
    x = ...
    initialized = 1;
  }
  /* Use x. */
}

请注意,您需要在每次调用时为 initialized 的检查“付费”,但如果计算 x 的值的工作足够昂贵,那么它可能是值得的。

【讨论】:

    【解决方案2】:

    您可以在 if 块之外声明变量“x”,但将其声明为静态:

    void some method (some parameter) {
        static int x = some_default_value; // this is your default value
        inx y = x + 2;
     }
    

    或者,如果您只在那里使用您的代码,并且 x 是一个常量,您可以在您的方法之外使用 #define 来定义它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 2018-04-28
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多