Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2011, 08:37   #1
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию Что не так с оператором деления?

Пишу такой код:
Label1->Caption = 25/2;
Выдаёт 12.
Пишу:
Label1->Caption = 25.0/2;
Выдаёт 12,5
Объявляю:
double x = 25/2;
и
double x = 25.0/2;
Смотрю в дебагге, та же хрень...
Не могу понять, в чём дело?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 11.04.2011, 08:43   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Это фишка C++. целое / целое = целое с отбросом остатка. константа 25 есть целое и поэтому результат целый. можно еще так писать:
(double) 25 / 2
pu4koff вне форума Ответить с цитированием
Старый 11.04.2011, 08:54   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Ха-ха. Впервые заметил.
А вот так "(double) 25 / 2" получается.
Ну блин разработчики мать их....
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 11.04.2011, 11:29   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Ну блин разработчики мать их...
Очень правильно... Перегрузка в действии, +оптимизатору проще и код эффективней
p51x вне форума Ответить с цитированием
Старый 11.04.2011, 12:38   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Очень правильно... Перегрузка в действии, +оптимизатору проще и код эффективней
Оно может и правильно. Но нам то от этого не легче. Если не известно какое число на какое будет дельться, придётся писать эту "галиматью".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 11.04.2011, 12:42   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Оно может и правильно. Но нам то от этого не легче. Если не известно какое число на какое будет дельться, придётся писать эту "галиматью".
Такие проблемы только с константами. Код вида:
Код:
double a = 5;
double b = 10;
double c = a/b;
отработает нормально, т.е. с неизвестными значениями в переменных с правильным типом, проблем не будет.

А уж сколько чудес можно натворить с операторами преобразования типов без ключевого слова explicit...
pu4koff вне форума Ответить с цитированием
Старый 11.04.2011, 13:57   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
А уж сколько чудес можно натворить с операторами преобразования типов без ключевого слова explicit...
Ммм, да уж. Десять лет уже программирую на С++, а всё равно на чём нибудь да споткнусь. Вот уж воистину - безграничны возможности С++.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что не так? fantasia18 Помощь студентам 0 11.03.2011 23:19
Что-то не так в программе...не пойму что Karina_Vamp Помощь студентам 5 24.12.2010 21:06
Как узнать что число не Float(без остатка) при результате деления? zotox Помощь студентам 7 19.07.2009 15:49
Что при нажатии на кнопку, выдало остаток от деления в Edit1 prikolist Общие вопросы C/C++ 4 03.04.2009 18:57