[過去ログ]
C#, C♯, C#相談室 Part96 (1002レス)
C#, C♯, C#相談室 Part96 http://mevius.5ch.net/test/read.cgi/tech/1639965805/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
370: デフォルトの名無しさん (アウアウウー Sa09-WuFg) [sage] 2022/07/30(土) 18:54:16.32 ID:jErZjSQja 皆さん、インクリメントとデクリメントについてどのようにお考えですか? 個人的にこれを使うことに抵抗があります(無知が理由で) 特に、内部メソッド等にローカルなintを渡して処理後に1だけ加算したいときってよくあると思うんですが、 int num = 0; M(num); num++; これと M(num++); これは、本当に常に一致してくれるんでしょうか? IL上での違いはこんな感じでした // M(num); IL_0003: ldloc.0 IL_0004: call void C::'<M>g__M|0_0'(int32) IL_0009: nop // num++; IL_000a: ldloc.0 IL_000b: ldc.i4.1 IL_000c: add IL_000d: stloc.0 IL_000e: nop // M(num++); IL_0003: ldloc.0 IL_0004: dup IL_0005: ldc.i4.1 IL_0006: add IL_0007: stloc.0 IL_0008: call void C::'<M>g__M|0_0'(int32) IL_000d: nop IL_000e: nop これって最終的には同じコードなんでしょうか? 可読性以外の差異がありましたら教えていただけないでしょうか。よろしくお願いします http://mevius.5ch.net/test/read.cgi/tech/1639965805/370
372: デフォルトの名無しさん (ラクッペペ MMee-kNao) [sage] 2022/07/30(土) 19:16:04.98 ID:1KJkNmDVM >>370 引数の値の評価が違う 前者 numを評価(変数numの値は0)→M呼出し(引数の値は0)→num++を評価(変数numの値は1) 後者 num++を評価(変数numの値は1)→M呼出し(引数の値は1)→変数numの値は1 http://mevius.5ch.net/test/read.cgi/tech/1639965805/372
375: デフォルトの名無しさん (ラクッペペ MMee-kNao) [sage] 2022/07/30(土) 20:09:53.26 ID:2QzW5DDXM 言語仕様としては厳密には未定義なのかも知れないが、少なくとも>>370のILの中身見た限りでは引数評価後に関数呼び出しが行われる様に実装されてる http://mevius.5ch.net/test/read.cgi/tech/1639965805/375
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.218s*