Я использую компилятор LLVM 5.1. В файле * .m только что попробовал строку
float result = 4 / 0;
и
int result = 4 / 0;
и оба дают результат равным нулю. Но, поскольку оба содержат выражение 4/0, которое является целочисленным делением на ноль независимо от типа определения переменной, компилятор только выдает предупреждение. Все остальные используемые мной компиляторы выдали бы ошибку из этого выражения.
Язык C определяет только то, что целочисленное деление на ноль не определено. Компиляторы, используемые в этом случае, по-видимому, определяют результат равным нулю. Это хороший пример того, почему вы никогда не должны зависеть от неопределенного поведения, которое ведет себя так, как вы ожидаете.