-2

次のコードの理由が見つかりません:

#include <stdio.h>
int main()
{
    float f = 0.1;
    if (f == 0.1)
      printf("True");
    else
      printf("False");
    return 0;
}

出力は false です。

#include <stdio.h>
int main()
{
    float f = 0.1;
    if (f == (float)0.1)
      printf("True");
    else
      printf("False");
    return 0;
}

正しい出力が表示されるようになりました。この背後にある理由は何ですか?

また、この動作の理由は何ですか。

#include <stdio.h>
main()
{
    int n = 0, m = 0;
        if (n > 0)
            if (m > 0)
                    printf("True");
        else 
            printf("False");
}
4

2 に答える 2

2

2 番目の質問 (3 番目の例) への回答:

あなたのインデントによると、コードはあなたが期待することをしません:

#include <stdio.h>
main()
{ 
    int n = 0, m = 0;
        if (n > 0)
            if (m > 0)
                 printf("True");
        else 
            printf("False");
}

ここでelseは inner に属しているifので、等しい

#include <stdio.h>
main()
{ 
    int n = 0, m = 0;
        if (n > 0) {
            if (m > 0) {
                 printf("True");
            } else {  
                 printf("False");
            }
        }
}

しかし、私はあなたが意味したと思います:

#include <stdio.h>
main()
{ 
    int n = 0, m = 0;
        if (n > 0) {
            if (m > 0) {
                 printf("True");
            }
        } else {  
            printf("False");
        }
}

ifこれは、ステートメントで常にユーザーブラケットを使用する必要がある理由の良い例です。

于 2013-08-22T10:19:44.950 に答える