В языке программирования C константа с плавающей точкой по умолчанию имеет тип double
поэтому 3.1415
является двойным типом, если только не используется суффикс 'f' или 'F' для указания типа с плавающей точкой.
Я предполагаю, const float pi = 3.1415
вызовет предупреждение, но на самом деле нет.
, когда я пробую это в gcc с -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);
результат:
f: 3.141593
d: 3.141593
f: 3.141593
i: 3
результат (включая двойную переменную) явно теряет точность, но компилируется без предупреждения.
так что же с этим сделал компилятор? или я что-то не так понял?