• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:評価について質問)

式の評価と演算について

このQ&Aのポイント
  • 式の評価と演算について、左から右に評価していく過程で、その式の演算子の優先順位の高い順から、その演算子の取るリテラルの評価が終わり次第、計算をする。
  • 式を評価するとは、変数やリテラルの評価と優先順位を考慮した演算を実行し、そしてその式の答えを求める一連のプロセスのことでしょうか?
  • 変数の評価とは、「ソースコードの中でその単語(token)を変数だと解釈することで、そのtokenがjavaの変数名の規約に従っていることかつ、それが事前に宣言されていることを検査した上で、その変数の値を解釈する」ということですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2

質問1:そのとおり。 質問2:そのとおり。 質問3:違います。 変数の評価とは、「ソースコードの中でその単語(token)を変数だと解釈することで、そのtokenがjavaの変数名の規約に従っていることかつ、それが事前に宣言されていることを検査した上で、その変数の値を解釈する」こういうことですか? それはコンパイラがすること。コンパイル済みのコードには単語(変数名)自体が有りません。 変数を評価するとは、変数に入っている値を認識(解釈)することです。 事前にa=0;という式が実行されていたとしても、その変数の中は実際に評価するとき何が入っているかは判りません。別なところで変更されているかもしれない。なので、変数aの中は「0」なんだと認識すること。

wantanton
質問者

お礼

丁重なご回答誠にありがとうございます!! >変数を評価するとは、変数に入っている値を認識(解釈)することです。 シンプルな回答助かります!

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

回答はNo2の方のとおりかな。 補足として、質問1についてですが、このあたりは言語によっていろいろです。ここはJavaのカテゴリなので、Javaであれば、お書きのとおり。 Cだと、部分式の評価順序は(別途定めのある場合を除き)未規定です。つまり、a*b+c に対して、 cを評価 → bを評価 → aを評価 → a*bの演算 → その結果+cの演算 もありえるということ。演算子の優先度があるので、*の演算が+の演算より先であることは保証。 別途定めとは、&& や || や , や ? : の演算子のこと。 Java以外の言語に触れる機会があるなら、そういうことも知っておいたほうがいいでしょうね。

wantanton
質問者

お礼

丁重なご回答誠にありがとうございます!! java以外にも触れてみようかな、、

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

しまった・・・こっちを先に読むべきだったわね。 もう片方の質問にも回答したけど式の評価は ・原則左から順に処理する ・オペランドが出現した場合、その左右をオペランドで処理する ・その2つのうち、優先度の高いものがあれば先に処理する たったこれだけの規則よ。 コンパイルという手順があるから無理だけど もしコンパイルという手順がなければ 右の方に文法が間違ったコードが会ったとしても実行されちゃうわけね。 つまり 回答1 ・全ての要素の評価を行わない、上記のルールに則って左から行われるわ。 回答2 ・コードを実行すること。それ以上でもそれ以下でもないわ。 回答3 これはちょっとわからないわ。

wantanton
質問者

お礼

いつもお手数かけます、、丁重なご回答ありがとうございます!! もっと僕シンプルに考える必要ありますね、、

関連するQ&A