各種コンパイラで C 言語とC++ の小数型リテラル値の論理和を試す ― 2018年10月05日 11時37分17秒
まずは、復讐を兼ねて FreeBSD 11.2-RELEASE の llvm の出力。
LLVM のみ、この様な警告を表示し、他のコンパイラは何も出さない。
freebsd% cat logical-and-double.c
int main()
{
return 1 && .2;
}
freebsd% cc logical-and-double.c
logical-and-double.c:3:17: warning: implicit conversion from 'double' to '_Bool'
changes value from 0.2 to true [-Wliteral-conversion]
return 1 && .2;
~~ ^~
1 warning generated.
AIX の xlc コンパイラで。
aix% cat logical-and-double.c
int main()
{
return 1 && .2;
}
aix% xlc logical-and-double.c
aix%
Solaris の cc コンパイラ。
solaris% cat logical-and-double.c
int main()
{
return 1 && .2;
}
solaris% cc logical-and-double.c
solaris%
最後に、Linux の gcc コンパイラ。
linux% cat logical-and-double.c
int main()
{
return 1 && .2;
}
linux% gcc logical-and-double.c
linux%
LLVM が一番厳しくコードを検査する様だ。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2018/10/05/8968949/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。