Comparação de variáveis float e double [duplicate]

Possíveis duplicatas:
Diferença entre float e double
saída estranha em comparação de float com float literal

Estou usando o Visual C ++ 6.0 e em um programa estou comparando variáveis float e double Por exemplo, para este programa

#include<stdio.h>
int main()  
{    
    float a = 0.7f;
    double b = 0.7; 
    printf("%d %d %d",a<b,a>b,a==b);
    return 0;
 }  

Estou recebendo 1 0 0 como saída

e para

#include<stdio.h>
int main()  
{    
    float a = 1.7f;
    double b = 1.7; 
    printf("%d %d %d",a<b,a>b,a==b);
    return 0;
 }  

Estou recebendo 0 1 0 como saída.

Por favor, diga-me por que estou obtendo essas saídas estranhas e há alguma maneira de prever essas saídas no mesmo processador. Também como é feita a comparação de duas variáveis em C?