• ベストアンサー

andの意味について

※$a eq $b・・・$a と $b が等しい時に真 $a=1; $b=1; 下記の、例)2のandの意味が「且つ~~」として解釈していないと思うのですが、andの意味って( )の中と外だと意味が違ってくるのでしょうか。 下記の場合のandの違いを日本語訳で明確に理解したいのですが、どなたかご教授願えませんでしょうか。 例)1 if($a eq '1' and $b eq '1'){ 実行文; }else{ エラー文; } 例)2 ($a eq $b) and &Error('エラー。');

  • taku0
  • お礼率80% (160/199)
  • Perl
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • edomin
  • ベストアンサー率32% (327/1003)
回答No.1

「($a eq $b) and &Error('エラー。');」 これ、本当に「and」でした? これだと、 「$aと$bが等しいときに「エラー。」と表示」しますが「等しくないときは次の文へ」いきます。 ここが、「or」だったら 「$aと$bが等しくない時に、「エラー。」と表示」します。 これは、処理の順番を利用した書き方で、「and」はandの左側が偽なら右は評価しません。 また、「or」は、左が真の場合右は評価されず、左が偽の場合に右側を評価した結果を判定しています。なので、「例)2」の「and」を「or」に変更すると、「例)1」の実行文が無い物と同じになります。

taku0
質問者

お礼

ご教授頂きまして有難うございます。 ( )の中と外とで意味がかわるとかではなくて、真偽によって評価が変わるんですね。 且つ○○・・・として捉えていたので、こんがらがってきていました。 > これ、本当に「and」でした? 手元のCGIでは、($FORM{aaa} eq '') &Error('エラー'); として使われていまして、これはどのように考えれば良いのか迷っていた為、お恥かしながら質問させて頂いた次第です。 お蔭様で納得する事ができました。有難うございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

例)1 と 例)2 は、同じ意味ではありません。

関連するQ&A

  • 意味を教えてください(CGI)

    CGIの勉強をしています。 以下の意味を教えてください。 ・&error("2222");←"2222"の意味 ・&error("サーバーエラー。#101");←#101の意味 ----------------------------------- &decode; if($orden eq 'enviar' || $preview == '0'){ &enviar; } &previsto; &error("2222"); sub decode{ if ($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }else{ &error("サーバーエラー。#101"); }

    • ベストアンサー
    • CGI
  • シェルで and/or の優先順位について

    echo "" echo " $BAR1 | $BAR2 | $BAR3 " echo "  ̄ ̄ ̄ ̄ ̄ ̄ ̄" echo " $BAR4 | $BAR5 | $BAR6 " echo "  ̄ ̄ ̄ ̄ ̄ ̄ ̄" echo " $BAR7 | $BAR8 | $BAR9 " echo "" if [ $BAR1 -eq $BAR2 -a $BAR1 -eq $BAR3 -o \ $BAR4 -eq $BAR5 -a $BAR4 -eq $BAR6 -o \ $BAR7 -eq $BAR8 -a $BAR7 -eq $BAR9 -o \ $BAR1 -eq $BAR5 -a $BAR1 -eq $BAR9 -o \ $BAR7 -eq $BAR5 -a $BAR7 -eq $BAR3 ]; then SCORE=`expr $SCORE + 700` else SCORE=`expr $SCORE - 30` fi echo "" echo " スコアは【 $SCORE 】 です。 " echo "" 簡単なスロットゲームを作ってみました。C言語では可能な AND/ORの優先順位づけ()がbashでも機能するでしょうか?自分なりにGoogleを探ってみましたが、満足のいく回答は見つけられませんでした。 以下の例では、エラーを返しました。 if [ (($BAR1 -eq $BAR2) -a ($BAR1 -eq $BAR3)) -o \ (($BAR4 -eq $BAR5) -a ($BAR4 -eq $BAR6)) -o \ … なお、manコマンドで以下の説明を見つけましたが、知識が足りずよく意味がわかりません。 なお、コピペの都合上、スペースやタブなどが反映されず、スクリプトが見づらくなっていますが、ご容赦願います。 ************************************************************* (list) list はサブシェル内で実行されます。シェルの環境に影響を与えるような変数の代入や組み込みコマンドは、コマンドの終了後に影響を残しません。返却ステータスは list の終了ステータスです。

  • perlの論理演算子の「and」と「&&」の違い

    perlの論理演算子の「and」と「&&」の違いは、 「弱い結合」と「強い結合」とかで説明されている のを見かけますが、これは、 「短絡評価」(左側が偽だと右側が実行されない)と 「短絡評価でない」(左側の真偽に関係なく右側が実行される) のと同じ意味になるのでしょうか。 例えば、 sub x {  print "sub x\n";  return 0; } sub y {  print "sub y\n";  return 1; } の2つのサブルーチンがある場合に、 (1) if(&x==1 and &y==1){    print '真',"\n";   } else {    print '偽',"\n";   } (2) if(&x==1 && &y==1){    print '真',"\n";   } else {    print '偽',"\n";   } を、実行した場合、サブルーチンyは、 (1)では実行されず、(2)では実行される という理解で正しいでしょうか。 (実際にはどちらも実行されていないようなのですが)

    • ベストアンサー
    • Perl
  • IF文

    (A)IF 条件 THEN 単純実行文1 ELSE 単純実行文2 (B)IF 条件 THEN 実行処理1 ELSE 実行処理2 Aの文では単純実行分なのになぜ改行すると(B)の文みたいに実行処理になるのでしょうか? 実行処理と単純実行文の違いを教えてください

  • シェルスクリプトのif文

    シェルスクリプトのif文について質問です。 あるファイルが存在しないときだけ処理を行いたい場合、 下記のような記述をするしかないのでしょうか? if [ -e /tmp/test.txt ]; then  ダミー処理(val1=1など意味のない処理)  (ダミー処理を入れるのは何も書かないとエラーとなってしまうため) else   行いたい処理 fi elseを使わずに if  fi だけですますことはできないでしょうか? -eはファイルが存在するならば真なので 逆に意味が真となるようにしたいのですが・・・

  • シェルの -eq の動作について

    シェルの -eq の動作について質問があります。 次のプログラムの動作を例に挙げます。 【ファイル名:A.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 666 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A 【ファイル名:B.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 667 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A -Question- A.shがif文に入ってしまう理由を教えてください。 変数Bが二重参照しているような気がするのですが、 そのような機能がshにあるのでしょうか? あと、もう一つ質問があります。 このシェルを古いバージョンで実行すると、  A.sh: line 8: [: A: integer expression exprected というエラーが出てしまいます。 これについても、わかる人がいましたら教えてください。

  • ファナックマクロ演算子and、or,xorの使用…

    ファナックマクロ演算子and、or,xorの使用方法について and,or,xorの使用方法について質問したいのですが IF[[#1EQ#0]AND[#2EQ#0]]GOTO1 という使い方をしたらエラーになりました。 AND,OR,XORはTHENとの組み合わせしか使用できないのですか? どなたか使用例をあげて教えていただけないでしょうか?

  • PHP「FALSE」や「0」を使った条件文

    「if条件文」の()に「FALSE」や値「0」がはいると なにも考える事無く無条件に 「else」以降の条件が実行になるという決まりなのでしょうか? もしそうであれば条件分にする意味があるのでしょうか? 基本的な質問で申し訳ないのですが 実際に使われる分かりやすい簡単な例があれば ご紹介ください。 よろしくお願いいたします。 例1: if(FALSE){ echo "FALSEではない"; }else{ echo "FALSEです。"; } 例2: if(0){ echo "ゼロではない"; }else{ echo "ゼロです。"; } 例3:(特にこの例は何かおかしいような気がします) if(10-10){ echo "イフが実行"; }else{ echo "エルスが実行"; }

    • ベストアンサー
    • PHP
  • シェルの -eq の動作について

    シェルの -eq の動作について質問があります。 次のプログラムの動作を例に挙げます。 【ファイル名:A.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 666 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A XXXXXXX 【ファイル名:B.sh】 #!/bin/sh readonly A=666 B=A echo $B if [ $B -eq 667 ]; then echo XXXXXXX exit 0 fi 「実行方法」 sh B.sh 「実行結果」 A -Question- A.shを実行すると、処理がif文に入ってしまう理由を教えてください。 変数Bが二重参照しているような気がするのですが、 そのような機能が sh にあるのでしょうか?

  • (Excel VBA)and,orについて

    andとorを同時に使用する場合について質問です。 Case1) if A=1 and B=1 or C=1 then これは「Aが1かつBが1であるか、又はCが1であれば」という意味か 「Aが1であり、かつBが1であるか又はCが1であれば」という意味なのか どちらでしょうか。 Case2) if A=1 or B=1 and C=1 then 次に、この場合はどちらの意味でしょうか。 よろしくお願いします。

専門家に質問してみよう