• ベストアンサー

条件式 ! char[0] とは

こんにちは。 char test[1]; if (! test[0]){ } この条件式 !test[0]の意味が分かりません。 test[0]がどういう状況のとき(どういう値が入っているとき)に 真、または偽になるのでしょうか? お分かりになる方よろしくお願いします。

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

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.3

わかりにくいので、こういう書き方は、良くないプログラムです。   !式 は、   !((式)!=0) と同じ意味です。 結局   (式)==0 と同じです。つまり、このif文は   if(char[0]=='\0') という意味ですね。

coralieclement
質問者

お礼

御回答どうもありがとうございました(^^)

その他の回答 (2)

回答No.2

最後の部分間違えました。 真:test[0]==0 偽:test[0]!=0 です。

回答No.1

ifなどで判定する時に、「0を偽、0以外を真」として判断しています。 http://homepage3.nifty.com/mmgames/c_guide/07-01.html つまり、if(a!=0)と書いてあったときはif(a)と書いても同じことになります。 また、if(!a)の!はNOTです。つまり「0を真、0以外を偽」とする事になります。 http://homepage3.nifty.com/mmgames/c_guide/07-02.html なので、今回の場合 真:test[0]=0 偽:test[0]!=1 となります。

coralieclement
質問者

お礼

ご回答どうもありがとうございました(^^)

関連するQ&A

  • Excelの条件式について

     現在Excelで、条件に合うセルはデータを更新し、条件に合わないセルはその既存の値を保持するという条件式をずっと考えていますが、どうしてもやり方がわかりません。  どなたかご教授していただける方いましたらよろしくお願いします。 if(式、真の場合(=更新データ)、偽の場合(=今そのセルにあるデータを保持)) の偽の場合がどのように指定すればよいかわからないということです。

  • 「判定条件網羅(分岐網羅)」について

    プログラム中に次の複合判定がある。 条件1 OR (条件2 AND 条件3) 判定条件網羅(分岐網羅)に基づいてテストする場合、 追加するテスト項目として適切なものは、どれか。 [終了したテスト項目] (1)条件1が真、条件2が偽、条件3が偽 (2)条件1が偽、条件2が真、条件3が真 正解:ア 解説には下記の内容が記載されています。 (1)条件1が真、条件2が偽、条件3が偽を条件式に当て嵌めます。 真OR(偽AND偽)=真OR(偽)=真 (2)条件1が偽、条件2が真、条件3が真を条件式に当て嵌めます。 偽OR(真AND真)=偽OR(真)=真 しかしその条件式が読めません。 何故、真OR(偽AND偽)=真OR(偽)=真に、 偽OR(真AND真)=偽OR(真)=真になるのですか。 真OR(偽)=真OR偽で、偽OR(真)=真OR偽ではないのですか。 お手数お掛けしますが、ご存知の方おられましたら、ご教授お願いします。 以上、よろしくお願い致します。

  • MSExcel2003で条件分岐の方法

    今まで、条件AまたはBである時は真・それ以外は偽を返す式を作るとき =if(A1="A","真",if(A1="B","真","偽")) という式を作ってきました。これをor記号を使って =if(A="A"or"B","真","偽") というように作り替えたいのですが,うまくいきません。 今は二つの条件に合わない場合は偽としていますが、これが 5つくらいになってくるとこの方法補煩雑で間違いが多くなり使えないのですが、 どうすれば上手な条件分岐をすることができますか?

  • C言語の条件式での~(チルド)について

    C言語に関しての質問です。 以下のようなプログラムでは変数bをキャストした場合と しない場合で条件式の判定結果が違います。 変数bはもともとunsiged char型なのでキャストは不要だと 思ったのですが、なぜ結果が違うのでしょうか? (条件式if(a != ~b)の判定結果も偽になることを期待していました。) unsigned char a; unsigned char b; a = ~0x98; b = 0x98; if(a != ~b) { printf("こっちは入る"); } if(a != (unsigned char)(~b)) { printf("こっちは入らない"); }

  • ifの条件式

    お世話になります。初歩的な質問とは思いますが、どうぞよろしくお願いします。 HTMLでのフォームの一部に次のようなラジオボタンの記述をしています。どちらか選んでCGIに渡し、「試験1」を選んだなら処理1を、「試験2」を選んだなら処理2を行いたいのですが、ifの条件式の書き方(ラジオボタンで選んだ方の値を受け取る変数の書き方)が分かりません。 ----HTML----------------------------------------- <input type="radio" name="test" value="テスト1"> 試験1 <input type="radio" name="test" value="テスト2"> 試験2 ----CGIスクリプトの一部-------------------------- if( ? ? ? =="テスト1"){ 処理1 }else{ 処理2 } ----------------------------------- ifの条件式の書き方を教えて下さい。 よろしくおねがいします。

    • ベストアンサー
    • Perl
  • VBAで条件式がうまく作れず困っています

    VBAで条件式を作りたいのですが、うまくできません。超初心者ですので、分かる方教えてください。 ある項目をみて、値が10、15、40のときその行を削除するというものです。その項目にはいろいろな値が入っています。 構造的には、 if(値が10または15または40) then   行削除 end if となるのでしょうが、カッコの中の書き方を教えてください。 よろしくお願いします。

  • 【Excel2003VBA】セルの文字で条件分岐

    基本的な質問で恐縮ですが、Excel2003のVBAで条件分岐をするときの方法について質問です。 例えば、A1に文字列の「当選」と「あたり」があった場合は、真の処理を、それ以外の場合は偽の処理をする場合は条件式にどのように書けば良いのでしょうか? 次の【条件式】に入る書き方を教えてください。 sub 条件分岐()   If 【 条件式 】 Then     真の場合   Else     偽の場合 End sub

  • 指定した文字列を複数含むという条件

    たとえば、「test」という文字列を2個含む場合に真を返すような条件を作れません。 「2つ以上」ではなくて、「2つ」でもけっこうです。 「test」という文字列が1つであれば偽、2つならば真にしたいでのす。

    • ベストアンサー
    • Perl
  • ☆★☆ホワイトボックステストの条件網羅について質問です!☆★☆

    ☆★☆ホワイトボックステストの条件網羅について質問です!☆★☆ 判定条件網羅は、「判定文における真偽の分岐をいずれか少なくとも1回は実行する」となっており、 例えば A and B の条件があれば、 テストケースは No1 A=真 B=真 AandB=真 No2 A=真 B=偽 AandB=偽 No3 A=偽 B=真 AandB=偽 No3 A=偽 B=偽 AandB=偽 となり 要するに、判定条件網羅は「判定結果が真と偽になる結果をそれぞれ選べ!」と言うことで No1とNo2~No3のいずれかであると理解できます。 ・・・が、しかし 条件網羅は、「複数の条件が組み合わさっている場合、それぞれの条件について少なくとも1回は実行する」 と言った説明が教本ではされていましたが その答えが No2とNo3 となる理由が理解出来ません。 どなたか、条件網羅がなぜ上記のような回答となるのか ご説明を願いします。

  • bash 条件式について

    他人が作ったシェルスクリプトを見てるんですが、私自身初心者でいくつかよく分からないところがあります。 if文条件式(というよりtestの条件)の等号記号についてです。 if [ 条件式 ]; then で、 1)2つの文字列が等しいかどうか確認する際に用いる記号は = でいいんでしょうか? テキストとして見ている書籍には、”=”で書いてあるのですが、今動いているというスクリプトには”==”と記述してあります。 2)2つの数値が等しいかどうか確認する際に用いる記号は -eq でいいんでしょうか? 今動いているというスクリプトには”==”と記述してあります。”==”と記述してもインタプリタのほうで吸収してくれて動かしてくれているのでしょうか? 今、見ている書籍のサンプルソースにも、文字列比較で、"="と書いてあったり、"=="と書いてあったりとよく分かりません。条件式はif文、それ以外で違ったりしてくるんでしょうか? すみません。よろしくお願いします。

専門家に質問してみよう