if文などの条件式について

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

if文などの条件式について

#1

投稿記事 by しろ » 15年前

if文などの条件式の表記について質問です。

C言語の規則としてif文の中の条件などで
a==b==cのような表記は認められているのでしょうか?

それとも(a==b) && (b==c)のような表記をしないとだめでしょうか?


手元の資料には特に記載がなかったので……

よろしくお願いいたします。

たいちう

Re:if文などの条件式について

#2

投稿記事 by たいちう » 15年前

> a==b==cのような表記は認められているのでしょうか?

認められていますが、おそらく実行結果は意図とは違ったものになるでしょう。
色々試してみてください。
if (2 == 1 == 0)
    printf("True!\n");
else
    printf("False!\n");

しろ

Re:if文などの条件式について

#3

投稿記事 by しろ » 15年前

ご回答いただきありがとうございます。

今コンパイラがないので確認できませんが、帰宅次第いろいろ試してみて、結果をこちらに記入させていただきます。

よろしくお願いいたします。

Ultimate

Re:if文などの条件式について

#4

投稿記事 by Ultimate » 15年前

if(a==b&&b==c){
文章
}

の形のほうが無難だと思います。

大した手間ではないので、そうするべきだと思います。

それがだめということもありませんが、たいちうさんが言うように、意図と違う結果を招きかねません。

MNS

Re:if文などの条件式について

#5

投稿記事 by MNS » 15年前

比較演算子の結果は値になるということと、
if( a == b == c )

if( (a==b) == c )
であることに注意して考えてみてください。

しろ

Re:if文などの条件式について

#6

投稿記事 by しろ » 15年前

いろいろ試してみましたが一応a==b==cなども通るようでした。

たいちうさんの

if (2 == 1 == 0)
printf("True!\n");
else
printf("False!\n");

も試したが、これはTrueとなりました。

これは((2==1)==0)が

偽の偽で結局真になるという理解でいいでしょうか?

たいちう

Re:if文などの条件式について

#7

投稿記事 by たいちう » 15年前

> 偽の偽で結局真になるという理解でいいでしょうか?

その理解で↓の結果を予想できますか?
if (2 == 0 == 1)
    printf("True!\n");
else
    printf("False!\n");

Poco

Re:if文などの条件式について

#8

投稿記事 by Poco » 15年前

> これは((2==1)==0)が
>
> 偽の偽で結局真になるという理解でいいでしょうか?

関係演算子は真の場合、1と評価され、偽の場合0と評価されます。
2==1は偽なので、0になります。
その結果(0 == 0)となりますので((2==1)==0)の結果は真となります。

box

Re:if文などの条件式について

#9

投稿記事 by box » 15年前

> if(a==b&&b==c){
> 文章
> }
>
> の形のほうが無難だと思います。

無難なのではなくて、a,b,cのすべてが等しいことを
判定するためにはそう書かなくちゃダメ。

しろ

Re:if文などの条件式について

#10

投稿記事 by しろ » 15年前

なるほど、理解することができました。

ありがとうございました。

閉鎖

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