1

特定の値でを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 に答える