2015-01-13 5 views

ответ

1

Изменить код из

yLimit = yLimit * (2/3);

к

yLimit = yLimit * 2/3;

Когда 2/3 деление происходит вы получаете 0. (ноль), то 0, умноженное на yLimit дает 0

+0

Я собирался указать, что это не имеет значения, но это на самом деле. Вы должны объяснить, почему это работает. – rmaddy

+0

@rmaddy: тот же здесь ... –

+1

@FahimParkar То же здесь что? Вы собираетесь сказать то же самое, что и я, или вы хотите знать, почему это работает? Я знаю, почему, я просто хочу дать плакату возможность объяснить это. – rmaddy

6

Другими словами, 2 и 3 являются неявно целыми типами. Когда происходит деление occurs, вы получаете целочисленное деление. Нуль. Нет остатка. Без округления.

Затем вы умножаете поплавок на этот результат.

Урок здесь заключается в том, что вы должны явно вводить свои литералы. C имеет суффиксы для литералов, которые помогут вам в этом.

Это действительно предназначено для человеческого кода чтения, как и для компилятора.