質問: リテラルス:彼らは記憶を取りますか? a: -- ``` 4; 4.0f; "text"; ``` b: -- ``` 4.0/5.3; 1.0f*2.3f+3.5f; "super" + "man"; ``` **質問** 1)このコードはメモリを占有していますか? 2)bのコードは、aのコードより多くのメモリを占有していますか? 3)誰も内部的に何が起こるかを詳しく説明できますか? 編集: "super" + "man"は悪い例ですが、最初は正しくありません。 (Michael Krelinのおかげで) 第二に、例に文字列を入れるのは悪い考えでした。
回答: 1. これはコードではありませんが、コード内で使用されている場合は、*どこかに*置きます。 2. いいえ、コンパイル時に評価されますが、単純に間違っている `"super" + "man"` 以外は `"super" "man"` コンパイル時に連結されます。そして "スーパーマン"は "テキスト"よりも大きい。 「4」(整数)は「4.0/5.3」(浮動小数点数)よりも少なくなる可能性があります。 3. 内部コンパイラは定数式を評価し、それらを*どこかに*置きます。残りの部分は、あなたが「メモリ」と呼ぶものに依存します。あなたのプログラムのアドレス空間のどこかにあります。