Zuweisen double-Konstante float-Variablen ohne Warnung in C?

In der Programmiersprache C, die Gleitkomma-Konstante double-Typ standardmäßig

so 3.1415 ist doppelter Art, es sei denn, verwenden Sie 'f' oder 'F' suffix angeben, float-Typ.

Ich gehe davon aus const float pi = 3.1415 wird zu einer Warnung führen, aber eigentlich nicht.

wenn ich versuche, diese unter gcc mit -Wall:

float f = 3.1415926;  
double d = 3.1415926;  
printf("f: %f\n", f);  
printf("d: %f\n", d);  
f = 3.1415926f;  
printf("f: %f\n", f);  
int i = 3.1415926;  
printf("i: %d\n", i);  

ist das Ergebnis:

f: 3.141593  
d: 3.141593  
f: 3.141593  
i: 3

Ergebnis (einschließlich double-Variablen) offensichtlich verlieren die Präzision, aber das kompilieren, ohne jede Vorwarnung.

was hat der compiler damit machen?" oder habe ich da etwas missverstehen?

Schreibe einen Kommentar