В языке программирования 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
результат (включая двойную переменную) явно теряет точность, но компилируется без какого-либо предупреждения.
так что же с этим сделал компилятор? или я что-то неправильно понял?