• ベストアンサー

二つの条件が不等価の場合の記述

どうも連続でくだらない質問で申し訳ありません(^^; 変数aが不等価、もしくは変数bが不等価の場合の記述はどのようにすればいいのでしょうか。 $aが"あ"ではない場合、もしくは$bが"い"ではない場合に次の処理を実行する、という書き方をしたいのですが if($a!="あ" || $b!="い"){ } ではうまくいきませんでした。 ご教授、よろしくお願いいたします。

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

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.4

#2さんへのレスを見ました。ならやはり答えは簡単です。 両方「偽」になる条件は存在しません。 なので $aが"あ"の場合は偽:真:真 $aが"い"の場合は真:偽:真 $aが"う"の場合は真:真:真 です。 やりたいことは「どちらかが一致しない」ではなく、「どちらかが一致する」じゃないですか? なら if($a=="あ" || $a=="い" ) ではないでしょうか?

umioyo
質問者

お礼

ご回答ありがとうございます。 頭がうにになってきました。 一応結果としましては if($a!="あ" && $a!="い" ) で思い通りに動きました。 >やりたいことは「どちらかが一致しない」ではなく、「どちらかが一致する」じゃないですか? はい、ここの考え方が間違っていました。 $a != "あ"は、aがあではない場合すでに一致、つまり真になっているんですよね。 うまく説明できませんが(^^;ここでごっちゃになっていたようです。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.3

> ところで(条件A || 条件B)の真というのは、{}内の処理がされている場合が真でよろしいんですよね? おっしゃる通りです。 if (条件){  条件が真の処理 }else{  条件が偽の処理 } 一つ気になった点があります。 両方が「偽」ということは$aが"あ"であり、$bが"い"である場合です。 例えば、$aが"う"で$bが"え"の場合は両方「真」ですので、if条件は真となります。 この認識で大丈夫でしょうか? また、両方「真」という条件がないのであれば if(!($a!="あ" && $b!="い")) という記載もできます。

全文を見る
すると、全ての回答が全文表示されます。
noname#9414
noname#9414
回答No.2

もしかして・・・なんですが、forループの中で、判定させるための$aと$bを初期化してから、使い始めていないために、判定で使用している$aや$bが、使っていないときに、その前のループでの値をそのまま保持しているなんて事はないですよね・・・ 間違いがありましたらご指摘ください。 ではでは☆

umioyo
質問者

お礼

ご回答頂き、ありがとうございます。 値の保持はないんですが、間違いに気づきました。 a!="あ" || b!="い" ではなく a!="あ" || a!="い" でした。でも関係ないですよね??

全文を見る
すると、全ての回答が全文表示されます。
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

うまくいかないとは具体的にどの条件のときに発生しますか? 条件A、条件Bがあったとします。 (条件A || 条件B)はどのようになるか? 条件A:条件B:(条件A || 条件B) 真:真:真 真:偽:真 偽:真:真 偽:偽:偽 となるはずです。

umioyo
質問者

お礼

ご回答ありがとうございます。 ということは、この式であってるということですよね? 条件Aだけ,条件Bだけで試すと思い通りの処理をしてくれるのですが、A||Bとするとうまくいきません。 for文の中でAとBを回しているので両方真はありえないのですが、 真:真:? 真:偽:真 偽:真:真 偽:偽:真 になってしまっている状態です。 ところで(条件A || 条件B)の真というのは、{}内の処理がされている場合が真でよろしいんですよね?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ifの条件式 Andを使用するものについて

    phpで、 $a="あいうえお"; $b="かきくけこ"; $c="かきくけこ"; と変数を三つ宣言しました。 上の変数三つを利用して、以下条件のif文を作りたいと思いました。  条件:$a変数 と $b変数が異なり、かつ $b変数 と $c変数の内容が同じとき「処理A」を実行させる。 ○作成したif文 if(($a <> $b) && ($b == $c)){  処理A } と記述したのですが、 ifブロック処理Aが実行されません。 なぜなのでしょうか…。 ご教授お願いします。

    • ベストアンサー
    • PHP
  • 【SQLServer】何も処理しない場合の記述について

    【SQLServer】何も処理しない場合の記述について お世話になってます。 ご存知の方いらっしゃいましたら教えてください。 Oracleでは、IF文の中で何も処理したくない場合、明示的にNULLと書けば、コンパイルできます。 IF XXXXX THEN A = 100 ELSE -- 何もしない NULL END たとえ何も処理しない場合でも、明示的にELSE句を 書きたい場合は、 SQLServerの場合、何をかけばよいのでしょうか? 今のところ下記のように、ELSEの場合は意味の無い処理を記述しています。 IF XXX BEGIN A=100 END ELSE IF BEGIN -- 何も処理しない A = A END A=Aは意味の無い処理なのですが、削除するとコンパイルが通らなくなってしまうのでやむなく記述してます。 どなたかいいアイデアありましたらご教授くださいませ。 よろしくおねがいします。

  • 条件が複数ある場合のif文の書き方

    条件が一つだけの時は上手く動いたのですが、条件を複数にした場合はどう書いたらいいのかわからず、質問させていただきました。 『おしえて!!ACTION SCRIPT』という本を見ながら、Flashを作っています。 その中ではif文の書き方は if(条件式が正しかったら){  実行するスクリプト; } となっていますが、変数が複数あって、そのすべてが合致しないと指定のフレームに飛べないようにするためにはどう書いたらいいでしょうか? if(a==1){ gotoAndPlay(2); } if(b==1){ gotoAndPlay(2); } if(c==1){ gotoAndPlay(2); } と、続けて書くとa=1の時点でフレーム2に進んでしまうことになりますよね? そうでなく、a.b.c全ての変数が1の場合に、フレーム2に飛ぶようにしたいのです。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • if条件の中に関数を使いたい

    お世話になります。 $a $bという項目があり等価かどうかを判断して何かを処理するとき if ($a==$b){} if ($a eq $b){} といった書き方になると思うのですが、a、bそれぞれの先頭の一文字のみを比較したい場合 if (substr($a,1,1) eq substr($b,1,1)){} と書きたいのですが、とおりません。PERLでは こういうことはできないのですか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 【ExcelVBA】IF条件を満たしているのに、IF条件のところで止まってしまう

    Sub test1() 変数1 = IsEmpty(Range("C1")) If Range("A1") > 0 And Range("B1") = 0 And 変数1 = True Then   test2 End If End Sub 止まったときのデバッグでの表示は Range("A1")は「100」(セルの中身) Range("B1")は「0」(セルの中身) 変数1はRange("C1")がエラー表示なので「True」 すべての条件を満たしているのですが、 IF条件のところで止まってしまいます。 (IF条件のところの1行が黄色くハイライトになっている状態) 止まったデバッグの後に、F5を押して実行させると、 IF条件の続きから実行されて、test2が実行されて処理が終了します。 何で、IF文のところで一度止まってしまうのかわかりません。

  • 条件分岐の記述方法

    FlashのActionScript3にてプログラムを書いています。 "kazu"という変数があり、その値に応じて処理を分けているのですが、 そのkazuが、例えば2, 7, 13, 26, 35の時は、●●の処理を行う という感じのプログラムになっています。 ↓このような感じ ------------------------------------------------------------ if(kazu == 2 || kazu == 7 || kazu == 13 || kazu == 26 || kazu == 35){  処理 } ------------------------------------------------------------- ※「 || 」は「or(又は)」の意味 kazuの値は例えば1~100の間で変動し、 上記のように規則性がなく、任意の値、任意の数(個数)で処理をさせたいのです。 この記述で特に問題なく動作するのですが、 これをまとめて記述する方法ってありますか? 上記ではkazuの種類が5種なので、この程度の記述で済みますが これが、例えば10~20種になった時 ------------------------------------------------------------ if(kazu == 2 || kazu == 7 || kazu == 13 || kazu == 26 || kazu == 35 || kazu == 36 || kazu == 37 || kazu == 38 || kazu == 39 || kazu == 40){  処理 } ------------------------------------------------------------- ※横に長くなるので、あえて2行にしています。 のように、記述が長くなるので まとめて記述できるような書き方があるのかどうか教えていただければと思います。 よろしくお願いします。

  • if条件の複数指定

    基本的な質問ですみません。 Bシェルのif条件文で、例えば 「変数"$VAL"の値が"A"でも"B"でも"C"でもなかった場合はエラーを出力してexitさせる」 という処理を行いたいとします。 ("A"、"B"、"C"の場合は何もせず) もっともシンプルな構文はどういったものになるでしょうか? 宜しくお願い致します。

  • ちょっとした記述に関する疑問

    どちらでもいいような内容かもしれませんが、よろしくお願いします。 ---------------------------------- flag = false; if(num < 0) { num *= -1; flag = true; } //numを使って何かの処理 ~~ if(flag) { //処理 num *= -1; } ---------------------------------- 例として、変数numが負だったらフラグをtrueにして、 最後にそのフラグをもとに処理を行うという一連の動作があった場合に、 if(num < 0) { num *= -1; flag = true; } というふうにフラグを後に記述するのか if(num < 0) { flag = true; num *= -1; } というふうにフラグを先に記述するのか がふと気になったのですが、みなさんはどちらでやっているのでしょうか?

  • Workbookが2つあった場合に

    元のブックAがあります。 もう一つ別のブックBを開いた場合に そのBのデータをAにコピーするマクロを作ったのですが そのBを開いてない場合に実行してしまってもエラーにならないように したいのですが、Bが開いてないことを認識させたい場合 If~thenで記述したいのですが、どう記述すればよろしいでしょうか? ちなみにBを開いた場合は Workbooks(2).Activate このように記述しています。 

  • if等判定文での定数、変数の記述順序

    perlスクリプトなどで、判定文を記述する際の考え方について、 重箱の隅的な質問になりますが、よろしくお願いします。 (1)if等判定文での定数、変数の記述順序 例えば、ある変数が0であることを判定するのに、結果は同じなのですが、 [] if($a == 0) [] if(0 == $a) のどちらで書く方が良い(理にかなっている)のでしょうか? (文字列でも同じでしょうか) [] if("$a" eq "") [] if("" eq "$a") (2)私はよく上限、下限の判定を行う際に、 [] 0 < x < 10 ということを表現する際に、 数学的に見映え(並び順)が同じになるよう、 [] if((0 < $x) && ($x < 10)){ と書くのですが、(1)のことと照らし合わせると、 [] if(($x > 0) && ($x < 10)){ と書いたり、 [] if((0 < $x) && (10 > $x)){ と書くほうが良いでしょうか。 (3)以上の(1)(2)のことは、標準的なC言語でも同じでしょうか? (4)Perl独特の書き方ですが、1行で済む実行文の場合、 [] 実行文 if(条件文); と書く方が、 [] if(条件文) 実行文; と書くよりも変換効率(?)か何かが良いと聞いたのですが、 どういう理由でどちらが良いとかありますか? この辺の違いはコンパイラが吸収してくれるので、どちらでも良いとか、 何か参考になる文献などもありましたら、ご教示よろしくお願いします。

    • ベストアンサー
    • Perl