• ベストアンサー
  • すぐに回答を!

演算子の優先順位

演算子の優先順位が良くわかりませんが次の例題はどう考えればよいでしょう? (例)a = 5,b = 2 としたときの,w の値が1 となる演算式は? ア w = ++a / ++b; イ w = ++a / b++; ウ w = a++ / ++b; エ w = a++ / b++;

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数139
  • ありがとう数3

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

  • ベストアンサー
  • 回答No.2

演算子の優先順位というより、単項演算子の評価の仕方だよね。 もし、プログラミングを本気で勉強したいなら参考書をよく読んで勉強しよう。 w,a,b すべてintの前提のもとで以下のようになります。 ア w = ++a / ++b = 6 / 3 = 2 イ w = ++a / b++ = 6 / 2 = 3 ウ w = a++ / ++b = 5 / 3 = 1 エ w = a++ / b++ = 5 / 2 = 2

共感・感謝の気持ちを伝えよう!

質問者からのお礼

後置きの場合は数値はこの場合はそのままで考えればいいわけですね。 回答あいがとうございます。

関連するQ&A

  • 後置き++演算子の優先順位に関して

     お世話になります。C/C++初心者です。以前から気にな っていましたが、ホームページのC言語の講座を見ていま すと、後置き++(--)の優先順位がドット演算子と並んで トップに位置付けされているのがよくあります。  代入演算子よりも低く、むしろ一番低順位なのではと、 疑問に思っていますが、何か理由があるのでしょうか。  まったく初歩的な質問ですがこの際ご教授願えればと 思いました。どうぞよろしくお願い申し上げます。

  • 演算子の優先順位

    インクリメントと四則演算の優先順位に関して迷っています。 手持ちの教材では、++,--は四則演算+,-,*,/よりも上位なはずなのですが、どうやら後から計算されているようなのです。 【具体例】 g=10, h=5としたときに i = ++g / h-- とすると、i = 2となるのが、わかりません。 なぜでしょうか?

  • 演算子の優先順位を確かめる方法はありますか?

    市販されている本とかサイトの演算子の優先順位の資料を見ますと、 ある本は ++ と -- が同順位で ! が下位順位となっており、 違うサイトの順位を見ると! と ++ と -- が同順位でした。 どちらが正しいか分かりません。 if文を使って検証してみようとしましたが、頓挫してしまいました。 宜しくお願い致します。

    • ベストアンサー
    • PHP

その他の回答 (1)

  • 回答No.1
  • Tasuke22
  • ベストアンサー率33% (1799/5383)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。

関連するQ&A

  • 優先順位について質問

    優先順位とは、結合という観点において、「それが高い演算子ほどオペランドを先に結び付ける」こういうことでしょうか? 質問2:結合規則とは、同じ優先順位の演算子において、「より右にある演算子の結びつきが優先されるのか、あるいは、より左にある演算子の結びつきが優先されるのか」を示す概念。 こういうことでしょうか?

    • ベストアンサー
    • Java
  • 優先順位の概念について質問

    質問1:優先順位や結合の規則とは、本質的に「優先順位の高い演算子ほど、オペランドをより先に結び付けられる」であり、「演算実行の優先順位」ではありませんよね? 何故そう思ったかというと次の論理式をご覧ください。 a==1 && b==0 || a==1 && b==0 ※int a==1,b==0 この論理式がtureになるプロセスとして、 a==1を評価→true    ↓ b==0を評価→true ↓ &&は、a==1 && b==0の論理式をtrueと評価 ↓ ||は、左側の論理式a==1 && b==0がtrueだから、論理式全体がtrueだと判断し、 右側の論理式の評価を行わない。 プロセスとして、こうだと思うんですけど、優先順位として||は&&より低いですよね? 優先順位が「演算実行の優先順位」を意味するならば、右側の論理式のa==1 && b==0を評価してから||の演算をするはずで矛盾します。 よって、優先順位とは本質的に、「優先順位の高い演算子ほど、オペランドをより先に結び付けられる」であり、「演算実行の優先順位ではない」といえる。 質問2:「優先順位の高い演算子ほど、オペランドをより先に結び付けられる」であれば、例えば、上記の論理式の左側を例に挙げていえば、 b==0は&&と||の2つが共有してるが、&&の方が優先順位が高いから、b==0を先に結び付けてる、その意味でも「優先順位の高い演算子ほど、オペランドをより先に結び付けられる」 は正しいですか?

    • ベストアンサー
    • Java
  • 算術演算子と連結演算子の優先順位について

    select 'aa' ||nvl2(comm,1,0) + nvl2(comm,1,0) || 'aaaa' from emp →ORA-01722: 数値が無効です。 というエラーが発生します。 nvl2(comm,1,0) + nvl2(comm,1,0)部分に括弧でおおうと、 つまり(nvl2(comm,1,0) + nvl2(comm,1,0))にするときちんと実行結果が出ます。 算術演算子のほうが連結演算子より優先順位が高いと習ったのですが実は逆ということでしょうか。 回答のほどよろしくお願い致します。

  • Verilog演算子について

    Verilogの演算子の優先順位について質問です。 文法等が書かれた参考書的な本が数冊読んだのですがその中で*,/,%の演算子と+,-の演算子の優先順位が逆の表記がされているものがありました。 自分で記述してみてテストしたところ、*,/,%の方が優先度が高い結果になったので「算数と一緒だ。。」と、納得はしたのですが、数冊同じ間違えがあったのでちょっと自信がなくなってしまいました。 気になるのでどなたか教えてください。

  • 【C言語】if文内の演算子の優先順位について

    【C言語】if文内の演算子の優先順位について こんにちわ。初めて質問を投稿させて頂きます。 宜しくお願い致します。 【環境】 OS:Windows XP(SP3) コンパイラ:Visual C++ 6.0 CPU:AMD Athlon X2 4200+ 【質問】 私は下記のプログラムを実行しました --------------------------------- 【プログラム】 #include <stdio.h> int main( void ) { int i = 1; int j = 2; printf( "i = %d\n",i ); printf( "j = %d\n",j ); if( (i = 0) && (j = 200) == 200 ){ printf( "\n(1)-----------------------------\n" ); printf( "i = %d\n",i ); printf( "j = %d\n",j ); } printf( "\n(2)-----------------------------\n" ); printf( "i = %d\n",i ); printf( "j = %d\n",j ); return 0; } 【出力結果】 i = 1 j = 2 (2)----------------------------- i = 0 j = 2 //(※) --------------------------------- 私は【出力結果】(2)のj = 2という出力結果(上記(※)の行)は j = 200にならないとおかしいと思っております。 なぜなら、私は【プログラム】内のif文「if( (i = 0) && (j = 200) == 200 )」 の判定手順が下記の様になると考えているからです。  (1)i = 0を実行  (2)j = 200を実行  (3)(i = 0)の判定実行   →判定の結果「0」なので&&の右側の判定「(j = 200) == 200」    を行うまでも無くif文全体の判定がFALSE。 しかし、実際は「j = 200」が実行されてないので、上記(2)と(3)の 判定手順が逆転している様に見えます。 C言語の優先順位を見ると「&&」や「==」よりも「()」の方が高いと 記憶してるので、(2)→(3)の順に実行されないとおかしいと思ってます。 しかし、私の予想した結果と実際の出力結果が異なるので私の演算子の優先順位 やif文内での判定手順の理解に間違いがあると考えています。 出来ましたらどの点が間違っているのかご教授願えませんでしょうか? 宜しくお願い申し上げます。

  • 優先順位を決定するアルゴリズム

    優先順位を決定するアルゴリズムがありましたら ご教授下さい. やりたい事は,以下の通りです. ・A,Bの二人がいる. ・二人はそれぞれというパラメータを持つ. ・各自パラメータに優先順位をつけている. ・二人にとってのパラメータの優先順位を決定する 例)A,Bがそれぞれ,a,b,cというパラメータを持つ. 各自パラメータに優先順位をつけている. A a:1 b:2 c:3 B a:2 b:2 c:1 この時,二人にとってのパラメータの優先順位を決定する.私は,以下の方法を考えました. 1.二人のパラメータの優先順位を足して 合計値を計算する. 2.値が同じ場合は,値の分散値が低い方が,優先順位が低いとする a:1+2 = 3 b:2+2 = 4 c :3+1 = 4 bの分散値の二乗:(2-2)の二乗 + (2-2)の二乗 cの分散値の二乗:(3-1)の二乗 + (2-1)の二乗 よって,bとcでは,bの方が優先順位が低いとする この他にも,優先順位を決定するアルゴリズムに関して,他の方法や,既存研究等がありましたらご教授下さい.

  • SQL文中の論理演算式の優先順位

    来週、初級シスアドの試験を受ける者です。 「何を今さら」と思われるかもしれませんが、参考書等に載っていなかったので質問します。 SELECT * FROM 表名 WHERE ○○○ OR △△△ AND □□□ 上記のSQL文でWHERE以下の論理演算式を解いていく場合の優先順位を教えて下さい。 問題集の解法では「△△△と□□□の論理積をだした後に○○○との論理和をだす」とありました。 また、「条件式の中の論理演算式の優先順位に注意しなさい」とありました。 この、優先順位を教えて下さい。よろしくお願いします。

  • 逆ポーランド記法の優先順位

    問題 X=(A+B)×(C-D÷E)を逆ポーランド記法へ 解説1)計算の優先順位を考える X=(A+B)×(C-D÷E) │   │    └┬─┘ │   └──┬──┘ └──────┘ 2)優先順に逆ポーランド記法に変換(A+B→AB+) A+B → AB+ D÷E → DE÷・・・つづく 優先順位はどうやって判断するのですか。知っている方お願いします。

  • 演算対象の数字と演算子を入力して計算させる

    数字と演算子をそれぞれ入力し、優先順位の高い順に四則演算させるにはどのような考え方をすればよいのでしょうか。 数字をa[7]とおいて、演算子をop[7]としてそれぞれ配列に格納しましたが、そこから先に進めません。 オペランドと演算子の組み合わせならば優先順に計算してくれるのはわかっていますが、オペランドと演算子を格納した配列では上手く行きません。 実は既に全ての演算子の組み合わせをIfで表示させるプログラムを根性で作ったのですが、最適解を知りたいです。 言語はCでvisualstudioを使っております。 条件はn回数字を入力したらn-1回演算子を入力し、n回目に=を入力する。nの最大値は7とする。です。 だらだらと見辛い文章で申し訳ありませんが、何卒宜しくお願いします。

  • かっこの優先順位

    いきなりですが質問です。レポートを書いているのですが かっこの使用優先順位を忘れてしまいました。どなたかご存知の方よろしくお願いします。 かっこの例;(1)、(1)、1)【1】、