C11ドラフトn1570の6.5.9 Equlity operators 3 (p.96)には次のように記載されています。
Each of the operators yields 1 if the specified relation is true and 0 if it is false
それぞれのオペレーターは、指定した関係が真の場合は 1 を、偽の場合は 0 を返す。
C11に準拠していれば、==
演算子が真の場合、必ず1
になります。では、C99以前や標準に準拠しないコンパイラではどうなのかがわかりません。真の場合に1
ではない数値を返す環境があるのか、それとも無いのか、あるとしたらどのような環境(Cのバージョンやコンパイラ、オプションなど)なのかを教えてください。
無い事を証明する場合は悪魔の証明になるので、
- K&R初版やANSI Cなどがどうであったか?
- GCC、Clang、Visual C++、BCC32C(Embarcadero C++ Compiler)、Intel C++ Compiler、Oracle Solaris Studio Compiler、Tiny C Compilerなど現在も入手し、最新の環境でも実行でき、組み込みなど特定アーキテクチャ向けでは無い汎用のメジャーなコンパイラでどうなのか?(たりなければ、ご指摘下さい)
でも結構です。ただ、とある組み込み系のコンパイラでは違うという情報があれば、それはそれで回答していただくと助かります。
【注意事項】
この質問はCについてのみです。C++ですと==
演算子をオーバーロードできるので、いくらでも例外が作れてしまいます。ただ、C++でもSTLに含まれる標準関数やboostで定義されたクラスではどうなっているのかという情報があれば、別途回答していただくと嬉しいです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/01 03:44
2018/01/01 03:49
2018/01/01 03:53