1

我试图int只用一个特定的值初始化一个并重复使用它。

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

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

谢谢。

4

2 回答 2

2

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

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

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

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

于 2012-12-14T15:14:56.563 回答
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您的方法外部定义它。

于 2012-12-14T15:15:20.147 回答