各種コンパイラで 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 が一番厳しくコードを検査する様だ。
最近のコメント