|
Ваше выражение
Resalt=(int)((Long)A*(Long)B*(Long)C)/(D-Long(C));
Переменная Resalt целого типа, значит преобразование long в int происходит автоматически, явно указывать нет необходимости.
Resalt=Long)A*(Long)B*(Long)C/(D-Long(C);
Далее, в выражении встречается операция, где операнды имеют разные типы, в таких случаях происходит автоматическое преобразование типа переменных к старшему типу (в данном случае long), поэтому явное преобразование типа можно опустить. Перепишем выражение еще раз
Resalt=(Long)A*(Long)B*(Long)C/(D-C);
Наконец, операция умножения происходит с данными типа int, и стало быть возможно переполнение. Надо привести тип операции к типу long, для этого достаточно сделать ЯВНОЕ преобразование типа ТОЛЬКО ДЛЯ ОДНОГО операнда:
Resalt=(Long)A*B*C/(D-C);
Такой должна быть самая краткая форма записи выражения, которое будет выполняться корректно.
E-mail: info@telesys.ru