問題タブ [pre-increment]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
3275 参照

c - Cのポストインクリメントおよびプレインクリメント演算子

kがインクリメントされないのに、iとjが同じ式でインクリメントされるのはなぜですか。また、プログラムの出力を知りたいのですが、出力は-2 310として取得されます。

0 投票する
2 に答える
55 参照

pre-increment - プレインクリメント演算子

プログラムの出力が「34」ではなく「44」であるのはなぜですか?

0 投票する
1 に答える
1285 参照

c# - ++演算子がオーバーロードされているときに、++fooとfoo++に違いがないのはなぜですか?

重複の可能性:
ポストインクリメント演算子のオーバーロード
なぜPostfix ++ / —がC#のプライマリ演算子として分類されるのですか?

++--演算子をオーバーロードできることを確認しました。通常、これらの演算子は2つの方法で使用します。intのインクリメント/デクリメントの前後の例:

ただし、演​​算子のオーバーロードに関しては、状況が少し異なります。

私の質問は、これらの最後の2行が同じものを出力するのはなぜですか?さらに具体的には、(2つの)最初の行が出力されるのはなぜflyingですか?


解決策は、演算子のオーバーロードを次のように変更することです。

0 投票する
3 に答える
501 参照

c++ - 右辺値を確実にプレインクリメント/デクリメントできますか?

たとえば、std::vector<int>::iterator it = --(myVec.end());. これは GCC 4.4 で動作しますが、移植性がないという噂を耳にしました。

0 投票する
3 に答える
102 参照

c# - 予期しない言語の動作 i++

私は次のことをしようとしました

i途中で増加していることを発見

私が最終的に増加を追加するだろうと思ったときi

i++C#でどのように機能するかについての説明を見つけられる人はいますか?

0 投票する
3 に答える
255 参照

c - インクリメント演算子での左辺値の問題

重複の可能性:
これらの未定義の動作を誰かが説明できますか(i = i ++ + ++ i、i = i ++など…)

このコードをコンパイルすると、ステートメント1でl値が必要なエラーが発生します。これは理解できます。同じことをするつもりなのに、ステートメント2でエラーが発生しないのはどうしてですか?誰かが光を当てることができますか?

0 投票する
3 に答える
4155 参照

php - echo ++$a + $a++ の出力はどうあるべきか

PHP マニュアルのoperator precedence sectionに、次の例があります。

次の理由により、動作が未定義であることを理解しています。

x + y = y + xインタプリタは、速度やメモリを最適化するために、任意の順序で自由に評価および追加できるためですxこの記事の C コードの例yを見て、これを結論付けました。

4私の質問は、式と部分式がどのように評価されても、上記の PHP コードの出力は次のようになるべきだということです。

  • op1 = ++$a => $a = 2, op1 = 2; op2 = $a++ => op2 = 2, $a = 3; 2 + 2 = 4
  • op1 = $a++ => op1 = 1, $a = 2; op2 = ++$a => op2 = 3, $a = 3; 1 + 3 = 4

5はどこから?または、オペレーターの仕組みについてもっと学ぶ必要がありますか?

編集:

Incrementing/Decrementing Operatorsセクションを見つめてきましたが、なぜ 5.

++$a: プリインクリメント -- $a を 1 インクリメントしてから、 $a返します。
$a++: Post-increment -- $a を返し、$ a を 1 ずつ増やします。

0 投票する
5 に答える
3859 参照

c - 式"j= ++(i | i);およびj = ++(i&i);は左辺値エラーである必要がありますか?

私は次のコードでそれを期待していました:

j = ++(i | i);j = ++(i & i);は、次のように左辺値エラーを生成します。

しかし、以下のように、上記のコードが正常にコンパイルされたことに驚きました。

上記のコードが正しく機能していることを確認してください。

他の演算子はエラーを生成しますが(私が理解しているように)。ビット演算子XORでさえエラーの原因になります(他の演算子がコンパイル時に左辺値エラーを生成することをj = ++(i ^ i);確認してください)。

理由は何ですか?これは未指定ですか、それとも未定義ですか?またはビット単位のORAND演算子は異なりますか?

コンパイラバージョン:

しかし、コンパイラのバージョンが不均一な動作の理由になるべきではないと私は信じています。コンパイルされていない場合^は、コンパイルされ|&いません。そうでなければ、すべてのために働くはずです

c99モードのこのコンパイラではエラーではありません:gcc x.c -Wall -std=c99

0 投票する
4 に答える
7020 参照

java - forループでの前後のインクリメント

Javaのforループでプリインクリメントとポストインクリメントを行う方がパフォーマンスが優れていますか?

サンプルコード:

プレインクリメントを行うと、ポストインクリメントを行う場合よりも実行時間が短くなることに気付きました。なぜこれが当てはまるのかについての提案はありますか?ありがとう。

0 投票する
2 に答える
183 参照

c - Cコード。整数変数の値があり、事前インクリメント操作の後に出力を取得する必要があります

説明付きで出力してください。
私が得ている答えは12ですが、 13である必要があります。