X = X++; と X++; の違いは何ですか? 質問する

X = X++; と X++; の違いは何ですか? 質問する

これまでにこれを試したことがありますか?

static void Main(string[] args)
{
    int x = 10;
    x = x++;
    Console.WriteLine(x);
}

出力: 10。

しかし

static void Main(string[] args)
{
    int x = 10;
    x++;
    Console.WriteLine(x);
}

出力: 11。

なぜそうなるのか誰か説明できますか?

ベストアンサー1

X++ は値を増分しますが、その後古い値を返します。

この場合は次のようになります。

static void Main(string[] args)
{
    int x = 10;
    x = x++;
    Console.WriteLine(x);
}

X は一瞬だけ 11 になりますが、その後 10 に戻ります。これは、10 が (x++) の戻り値であるためです。

同じ結果を得るために、代わりに次のようにすることもできます:

static int plusplus(ref int x)
{
  int xOld = x;
  x++;
  return xOld;
}

static void Main(string[] args)
{
    int x = 10;
    x = plusplus(x);
    Console.WriteLine(x);
}

また、次の操作を実行した場合、期待される結果 11 が得られることも言及する価値があります。

static void Main(string[] args)
{
    int x = 10;
    x = ++x;
    Console.WriteLine(x);
}

おすすめ記事