Вы не спрашиваете, всегда ли 0.0
представляется точно.
В выражении assert(n == 0)
, 0
преобразуется в double
до того, как произойдет сравнение.Таким образом, утверждение может быть запущено только в том случае, если преобразование 0
из int
в double
не воспроизводимо.Это гораздо более слабое ограничение, чем то, о чем вы спрашиваете, и оно почти наверняка будет иметь место (хотя я не могу придумать ссылку на стандарты, которая бы гарантировала это на моей голове).
К вопросувы намеревались спросить:
Как уже упоминалось, стандарт C не требует, чтобы типы с плавающей запятой отображались на IEEE-754, но я не знаю ни одного представления с плавающей запятой, используемого с любым компилятором C, который делаетне имеют точного представления ноль.Тем не менее, было бы «законно» для реализации C использовать формат для double
, который не имеет точного нуля.