2012-12-14 101 views
1

我想用一個特定的值初始化int並重復使用它。如何在if語句中初始化一個變量並在if語句之外使用它

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成爲一個全局變量,但我相信必須有比這更好的解決方案。任何建議都會有幫助!

謝謝。

+3

使用static關鍵字:'static int x = some value;'... – Maroun

回答

2

這可以用static變量來完成:

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

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

請注意,您則需要「付出」爲initialized每次通話的檢查,但如果工作做計算的x價值昂貴這可能是值得的。

2

可以聲明變量「X」以外的if塊,但它聲明爲靜態:,

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

另外,如果你只使用你的代碼中有,x是一個常數,你可以在您的方法之外使用#define來定義它。