2010年06月20日
川俣晶の縁側ソフトウェア技術雑記total 5965 count

C#の言語仕様ではi = i++;の結果が1つに決まる

Written By: 川俣 晶連絡先

 C#で以下のプログラムは0という結果になるようです。不定にはならないようです。

using System;

class Program

{

    static void Main(string[] args)

    {

        int i = 0;

        i = i++;

        Console.WriteLine(i);

    }

}

理由 §

 i++;は以下の手順で評価されます。

7.6.9 後置インクリメント演算子と後置デクリメント演算子

(中略)

x++ または x-- の形式の後置インクリメントまたはデクリメント演算子の実行時の処理は、次の手順で構成されています。

• x が変数の場合。

o x を評価して変数を生成します。

o x の値を保存します。

o 保存した x の値を引数として、選択された演算子を呼び出します。

o 演算子から返される値をx の評価によって得られる場所に格納します。

o 保存された x の値が、演算の結果になります。

 つまり、i = i++;以下のようになります。

  1. 変数が生成される
  2. 変数にiの値(これは0だ)を格納する
  3. iに1を足す
  4. 変数から値を取り出して式の値にする
  5. 変数から値を取り出して(これは0だ)iに代入する (1を足した結果は上書きされて破棄される)

 この手順に不確定な曖昧さは(おそらく)ありません。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2010年
06月
29日
Visual Studio 2010でプロジェクトとして作成されたASP.NETアプリをIISでデバッグする方法
3days 0 count
total 9560 count
【技術雑記】の前のコンテンツ
2010年
06月
16日
WPFのリストボックスの奇妙な動作
3days 0 count
total 5512 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20100620152436
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.