1

私はそれがどちらに行くのか理解できません。浮動小数点の問題全体のために、それを int にキャストする方が理にかなっているように思えますが、私が言ったように、よくわかりません。誰か知っていますか?

4

2 に答える 2

6

このコードを試してください:

#include <stdio.h>

int main(void)
{
    if (100.1 == 100)
        printf("Must be integer compare\n");
    else
        printf("Must be floating point compare\n");
    return 0;
}

また、 や なども考えてみてint i = 10; float j = 100.5 + i;ください100.2 == 100。整数でそれをしたくありません!

于 2012-07-10T19:58:29.730 に答える
5

「通常の算術変換」の下の6.3.1.8にリストされています。

それ以外の場合、いずれかのオペランドの対応する実数型が double の場合、もう一方のオペランドは、型 domain を変更せずに、対応する実数型が double である型に変換されます。

そして 6.5.9 はそれを次のように綴ります==:

両方のオペランドが算術型の場合、通常の算術変換が実行されます。

編集

私はC11 N1570を引用しています。

于 2012-07-10T19:58:04.713 に答える