こんばんゎ☆
テスト間近でかなり焦ってきました。。。。
助けてくださぁーーーーーーぃ。。
<質問>
演算子の優先度と結合法則の表についてなんですけど、
とりあえず、表は、上が優先度が高いってことは分かります。
ただ、それを使った次のような問題がとけません。。。
次の式の計算の意味を変更することなく、省略できる括弧を全て省いた式に変形しなさい。
括弧を省略すること以外の変形をしてはいけない。
1) a-((b-c)*d))-e
どこから、どのよにみてけばいいんでしょうか??
2) (+a(++a))+((b&c)<<(d+e))
3) (((*(a.b)).c->d)++
このような問題もあります。。
御指導お願いします。
演算子
Re:演算子
> どこから、どのよにみてけばいいんでしょうか??
とりあえず,括弧を外したものと括弧を付けたもので,順序が替わらないのであれば,その括弧は不要です。
> 1) a-((b-c)*d))-e
閉じ括弧が一個多いのですが……。
それはおいておくとして,小学校の算数で,かけ算・割り算は足し算・引き算よりも先にやる,というのを習いましたよね。
つまり,*や/は+や-より演算子の優先順位が高い事になります。
こいつについて考えると,
・(b-c)
括弧の外側にある演算子は*で内側にある演算子は-
括弧内の演算子の方が優先順位が低いから,この括弧を外すと順序が替わるためこの括弧は外せない。
・((b-c)*d)
括弧の外側にある演算子は-と-で内側にある演算子は* (このとき,括弧内にある括弧はひとくくりとして見る)。
括弧内の演算子の方が優先順位が高いから,この括弧を外しても順序が替わらずこの括弧は外せる。
というわけで,括弧を外すと
a-(b-c)*d-e
となります。
とりあえず,括弧を外したものと括弧を付けたもので,順序が替わらないのであれば,その括弧は不要です。
> 1) a-((b-c)*d))-e
閉じ括弧が一個多いのですが……。
それはおいておくとして,小学校の算数で,かけ算・割り算は足し算・引き算よりも先にやる,というのを習いましたよね。
つまり,*や/は+や-より演算子の優先順位が高い事になります。
こいつについて考えると,
・(b-c)
括弧の外側にある演算子は*で内側にある演算子は-
括弧内の演算子の方が優先順位が低いから,この括弧を外すと順序が替わるためこの括弧は外せない。
・((b-c)*d)
括弧の外側にある演算子は-と-で内側にある演算子は* (このとき,括弧内にある括弧はひとくくりとして見る)。
括弧内の演算子の方が優先順位が高いから,この括弧を外しても順序が替わらずこの括弧は外せる。
というわけで,括弧を外すと
a-(b-c)*d-e
となります。
Re:演算子
既に☆さんが「表」とおっしゃっているので紹介する必要がないのかもしれませんが
http://www9.plala.or.jp/sgwr-t/c/sec14.html
この辺の下の方に優先順位をまとめた表があります。
この表の通りに優先順位を見ていけばわかりますよ。
Yuoさんがお答えになっているので必要ないですけど、
a - (b*c)
はカッコが外れても計算過程は同じになるので、カッコが外れます。
問題はそういう意味でしょうね。
http://www9.plala.or.jp/sgwr-t/c/sec14.html
この辺の下の方に優先順位をまとめた表があります。
この表の通りに優先順位を見ていけばわかりますよ。
Yuoさんがお答えになっているので必要ないですけど、
a - (b*c)
はカッコが外れても計算過程は同じになるので、カッコが外れます。
問題はそういう意味でしょうね。