calloc
обнуляет все байты выделенной памяти.
Как оказалось, это также допустимый формат IEEE754 (который является наиболее распространенным форматом для значений с плавающей запятой на компьютеры) представление для 0.0
.
IIRC нет части спецификации C, которая требует реализации для использования IEEE754, поэтому, если быть придирчивой, она не переносима. В действительности, однако, это так (и если вы когда-либо собираетесь работать с системой, отличной от IEEE754, то вы должны накопить достаточно опыта, чтобы уже знать это и как решать такие проблемы).
Также обратите внимание, что это также справедливо для указателей. Во всех системах, с которыми вы, вероятно, столкнетесь, нулевой указатель должен быть равен 0
. Но могут быть системы, где его нет, но если вы работаете с такими системами, вы уже должны знать об этом (и если вы используете NULL
, то это не должно быть проблемой).
person
Some programmer dude
schedule
14.12.2018