演算子

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

演算子

#1

投稿記事 by » 18年前

こんばんゎ☆
テスト間近でかなり焦ってきました。。。。
助けてくださぁーーーーーーぃ。。


<質問>
演算子の優先度と結合法則の表についてなんですけど、
とりあえず、表は、上が優先度が高いってことは分かります。

ただ、それを使った次のような問題がとけません。。。
次の式の計算の意味を変更することなく、省略できる括弧を全て省いた式に変形しなさい。
括弧を省略すること以外の変形をしてはいけない。

1) a-((b-c)*d))-e

どこから、どのよにみてけばいいんでしょうか??

2) (+a(++a))+((b&c)<<(d+e))

3) (((*(a.b)).c->d)++

このような問題もあります。。

御指導お願いします。

YuO

Re:演算子

#2

投稿記事 by YuO » 18年前

> どこから、どのよにみてけばいいんでしょうか??

とりあえず,括弧を外したものと括弧を付けたもので,順序が替わらないのであれば,その括弧は不要です。


> 1) a-((b-c)*d))-e

閉じ括弧が一個多いのですが……。

それはおいておくとして,小学校の算数で,かけ算・割り算は足し算・引き算よりも先にやる,というのを習いましたよね。
つまり,*や/は+や-より演算子の優先順位が高い事になります。

こいつについて考えると,
・(b-c)
括弧の外側にある演算子は*で内側にある演算子は-
括弧内の演算子の方が優先順位が低いから,この括弧を外すと順序が替わるためこの括弧は外せない。
・((b-c)*d)
括弧の外側にある演算子は-と-で内側にある演算子は* (このとき,括弧内にある括弧はひとくくりとして見る)。
括弧内の演算子の方が優先順位が高いから,この括弧を外しても順序が替わらずこの括弧は外せる。

というわけで,括弧を外すと
a-(b-c)*d-e
となります。

管理人

Re:演算子

#3

投稿記事 by 管理人 » 18年前

既に☆さんが「表」とおっしゃっているので紹介する必要がないのかもしれませんが
http://www9.plala.or.jp/sgwr-t/c/sec14.html
この辺の下の方に優先順位をまとめた表があります。
この表の通りに優先順位を見ていけばわかりますよ。

Yuoさんがお答えになっているので必要ないですけど、

a - (b*c)

はカッコが外れても計算過程は同じになるので、カッコが外れます。
問題はそういう意味でしょうね。

Re:演算子

#4

投稿記事 by » 18年前

お二方、丁寧に説明していただいて、ありがとうございます。

計算の順序を考えながら、とればいいんですね★
解き方を教えてもらったので、違う問題お解いてみます。

本当に、救いの手をさしのべていただき、ありがとうございます★

>>管理人サン。。
ですよねぇ。。。そのまんまな感じするかもなんですけど。。。
実は、またメールしたんですょ。。。
なんで通じ合えないんでしょうー(笑)

また送ってみます!!!(笑)

Re:演算子

#5

投稿記事 by » 18年前

また送ったんですが・・・・・(笑)

よろしくお願いします(*^▽^*)

閉鎖

“C言語何でも質問掲示板” へ戻る