まず前提として C ではトークン分割は「貪欲」です。 トークンというのはプログラムの要素となる単語とでも考えてください。 分割するときは単語として成立する限りなるべく大きく取り、後がどうなっているかという状況に左右されないというルールです。 +++
と書いてあるとまずは ++
という単語だと認識し、残る +
が +
と解釈します。
つまり i+++j
と書いてあれば i
++
+
j
という 4 つの単語から成ります。 一般的には i++ + j
といったように空白を入れて書くほうが (人間にとってわかりやすいので) 好ましいと考えられるでしょう。
ここまでは質問者もわかっているようですが念のためにルールを説明しました。
ではインクリメント演算子の説明に移ります。 インクリメント演算子には前インクリメントと後インクリメントがあり、単独で書いた場合には変数に格納されている値を 1 ふやすという挙動に差がありません。 ++i
と書いても i++
と書いても i
の値はひとつ増えています。
ですが返す値には違いがあり、前インクリメント (++i
) が返す値はインクリメントした後の値で、後インクリメント (i++
) が返す値は「インクリメントする前の値」なのです。 ですから i+++j
における i++
が返す値は 3
であり、 j
の内容である 1
と足すと 4
なのです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/26 19:25