我尝试仅使用特定值初始化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
成为一个全局变量,但我确信必须有一个更好的解决方案。任何建议都会有所帮助!
感谢。
答案 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
来定义它。