如何在if语句中初始化变量一次,并在if语句之外使用它

时间:2012-12-14 15:12:08

标签: c variables scope constants global

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

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

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

感谢。

2 个答案:

答案 0 :(得分:2)

可以使用static变量完成此操作:

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

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

请注意,您需要“支付”每次通话时initialized的检查,但如果为计算x的价值所做的工作费用足够高,那么它可能是值得的。< / p>

答案 1 :(得分:2)

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

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

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