-1

平易な英語での私の質問: なぜこれが機能するのかsomeObject.methodReturnsInteger().getClass()(私は実際にはメソッドを意味するのgetClassではありません。Integer で機能するメソッドに過ぎません。具体的には Integer を返すメソッドを意味するわけではありません。) しかし、これは機能しません++a++

言い換えれば、なぜ (またはどのように) 解析 (またはトークン化) すると、最初の戻り値の使用が許可され、2 番目の戻り値の使用が許可されないのでしょうか? つまり、後者を次のように解析して(++a)++、戻り値を++a数値として使用するべきではありませんか?

同じことが次のようなものにも当てはまります。a+++++b

質問が十分に明確であることを願っています。

お時間をいただきありがとうございます。

4

3 に答える 3

1

値を格納する操作には、値を格納する場所が必要です。(a*2)++(a*2)は一時的な結果を返すため、とは言えません。その一時的な結果はすぐに破棄されるため、インクリメントしても効果はありません。同じ理由で、あなたは言うことができません(a*2)=10

と言う方が少し理にかなっているかもしれませんが、それは++(a*2)、インクリメントされた値を置く有効な場所がないときにインクリメントされた値を保存したいことを示しているため、言語設計者は(a*2)+1代わりに書くことを望んでいます。

後置および前置インクリメント演算子一時的な結果を返すため、それらを 2 回または組み合わせて適用することはできません。

于 2016-07-10T14:57:57.743 に答える