K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2271] 比較演算子を使った式の変数への代入について
投稿者:mhash
2022/02/13 13:01:05

はじめまして、mhashと申します。 以前kmaebashi様の著書(『プログラミング言語を作る』だったかと思います)で、Cのソースで bool = ( a == b ) (※bool,a,bは整数型の変数) のように比較演算子==での比較結果を直接変数に代入している箇所があったのですが、この書き方は規格上保証されているものなのでしょうか? また、保証されている場合はどのバージョンからでしょうか? 一般的な処理系ではコンパイルできるのだろうとは想像できるのですが、自分はあまりみたことがない書き方なので、気になって質問させていただきました。 初歩的ですみませんがよろしくお願いします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2272] Re:比較演算子を使った式の変数への代入について
投稿者:(ぱ)こと管理人
2022/02/13 23:04:05

>はじめまして、mhashと申します。 はじめまして。 >bool = ( a == b ) >(※bool,a,bは整数型の変数) >のように比較演算子==での比較結果を直接変数に代入している箇所があったのですが、 >この書き方は規格上保証されているものなのでしょうか? ==(等価演算子)については、JIS X 3010:2003なら「6.5.9 等価演算子」に記載があって、 「各演算子は指定された関係が真の場合は1 を,偽の場合は0 を返す。その結果は,  型int をもつ。」 とあるので、この結果をint型の変数に代入するのは完全に合法です。 >また、保証されている場合はどのバージョンからでしょうか? Cができた当初から、だと思います。いわゆる普通のif文で、 if (a == b) と書いたとしても、これは等価演算子の結果をもとに条件分岐しているにすぎません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2273] Re:比較演算子を使った式の変数への代入について
投稿者:mhash
2022/02/15 01:47:50

ご返信ありがとうございます。 比較演算子==の比較結果はint型の値なんですね。知りませんでした。 ご丁寧に教えて頂きありがとうございました。 >>はじめまして、mhashと申します。 > >はじめまして。 > >>bool = ( a == b ) >>(※bool,a,bは整数型の変数) >>のように比較演算子==での比較結果を直接変数に代入している箇所があったのですが、 >>この書き方は規格上保証されているものなのでしょうか? > >==(等価演算子)については、JIS X 3010:2003なら「6.5.9 等価演算子」に記載があって、 >「各演算子は指定された関係が真の場合は1 を,偽の場合は0 を返す。その結果は, > 型int をもつ。」 >とあるので、この結果をint型の変数に代入するのは完全に合法です。 > >>また、保証されている場合はどのバージョンからでしょうか? > >Cができた当初から、だと思います。いわゆる普通のif文で、 > >if (a == b) > >と書いたとしても、これは等価演算子の結果をもとに条件分岐しているにすぎません。 >
[この投稿を含むスレッドを表示] [この投稿を削除]