Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > деление


Автор: Bogdan1024 23.7.2006, 16:36
int c0 = 1;
int c2 = 5;
int c1 = 400 -231 + 1;
double k = (c0/c2) * c1;
Почему в итоге k == 0 хотя все числа тут явно != 0 ?? 

Автор: Meeer 23.7.2006, 17:28
потомучто у тебя переменная k типа double. А по правилу этот тип приведется к интеджеру, т.е. останется только целая часть - т.е. 0.
Либо все переменные объяви как double, либо сделай вычисления в виде double. 

Автор: Bogdan1024 23.7.2006, 17:32
А что это за правило такое?
Таки да, оказывается, нужно каждый множитель явно преобразовать в float. 

Автор: Oleg_Ci 23.7.2006, 17:54
А так ?
Код

int c0 = 1;
int c2 = 5;
int c1 = 400 -231 + 1;
double k = ((double)c0/c2) * c1;
 

Автор: Любитель 23.7.2006, 20:43
Цитата(Bogdan1024 @  23.7.2006,  17:32 Найти цитируемый пост)
А что это за правило такое?

Если в арифметической операции нет вещественных операндов, следовательно результат имеет тип int. 

Автор: Meeer 23.7.2006, 21:46
Bogdan1024, советую изучать С++ с книгой в руках, там много интерестных вещей написано!
Крайне рекомендую!  smile  

Автор: Bogdan1024 23.7.2006, 22:35
Спасибо всем! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)