if文などの条件式の表記について質問です。
C言語の規則としてif文の中の条件などで
a==b==cのような表記は認められているのでしょうか?
それとも(a==b) && (b==c)のような表記をしないとだめでしょうか?
手元の資料には特に記載がなかったので……
よろしくお願いいたします。
if文などの条件式について
Re:if文などの条件式について
> a==b==cのような表記は認められているのでしょうか?
認められていますが、おそらく実行結果は意図とは違ったものになるでしょう。
色々試してみてください。
認められていますが、おそらく実行結果は意図とは違ったものになるでしょう。
色々試してみてください。
if (2 == 1 == 0) printf("True!\n"); else printf("False!\n");
Re:if文などの条件式について
ご回答いただきありがとうございます。
今コンパイラがないので確認できませんが、帰宅次第いろいろ試してみて、結果をこちらに記入させていただきます。
よろしくお願いいたします。
今コンパイラがないので確認できませんが、帰宅次第いろいろ試してみて、結果をこちらに記入させていただきます。
よろしくお願いいたします。
Re:if文などの条件式について
if(a==b&&b==c){
文章
}
の形のほうが無難だと思います。
大した手間ではないので、そうするべきだと思います。
それがだめということもありませんが、たいちうさんが言うように、意図と違う結果を招きかねません。
文章
}
の形のほうが無難だと思います。
大した手間ではないので、そうするべきだと思います。
それがだめということもありませんが、たいちうさんが言うように、意図と違う結果を招きかねません。
Re:if文などの条件式について
比較演算子の結果は値になるということと、
if( a == b == c )
は
if( (a==b) == c )
であることに注意して考えてみてください。
if( a == b == c )
は
if( (a==b) == c )
であることに注意して考えてみてください。
Re:if文などの条件式について
いろいろ試してみましたが一応a==b==cなども通るようでした。
たいちうさんの
if (2 == 1 == 0)
printf("True!\n");
else
printf("False!\n");
も試したが、これはTrueとなりました。
これは((2==1)==0)が
偽の偽で結局真になるという理解でいいでしょうか?
たいちうさんの
if (2 == 1 == 0)
printf("True!\n");
else
printf("False!\n");
も試したが、これはTrueとなりました。
これは((2==1)==0)が
偽の偽で結局真になるという理解でいいでしょうか?
Re:if文などの条件式について
> 偽の偽で結局真になるという理解でいいでしょうか?
その理解で↓の結果を予想できますか?
その理解で↓の結果を予想できますか?
if (2 == 0 == 1) printf("True!\n"); else printf("False!\n");
Re:if文などの条件式について
> これは((2==1)==0)が
>
> 偽の偽で結局真になるという理解でいいでしょうか?
関係演算子は真の場合、1と評価され、偽の場合0と評価されます。
2==1は偽なので、0になります。
その結果(0 == 0)となりますので((2==1)==0)の結果は真となります。
>
> 偽の偽で結局真になるという理解でいいでしょうか?
関係演算子は真の場合、1と評価され、偽の場合0と評価されます。
2==1は偽なので、0になります。
その結果(0 == 0)となりますので((2==1)==0)の結果は真となります。
Re:if文などの条件式について
> if(a==b&&b==c){
> 文章
> }
>
> の形のほうが無難だと思います。
無難なのではなくて、a,b,cのすべてが等しいことを
判定するためにはそう書かなくちゃダメ。
> 文章
> }
>
> の形のほうが無難だと思います。
無難なのではなくて、a,b,cのすべてが等しいことを
判定するためにはそう書かなくちゃダメ。