Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неужели в math.h не включена функция sign/signum? 
:(
    Опции темы
Royan
Дата 2.10.2004, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Какое - то странное исключение?


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Дрон
Дата 2.10.2004, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Вроде нет smile.gif
Да и зачем он нужен? Можно же самому написать smile.gif
Самый простой:
Код
int sgn(int val)
{
  return (val>0)?(1):((val<0)?(-1):(0));
}



--------------------
Да. Именно так.
PM   Вверх
lynx_916
Дата 2.10.2004, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 13.6.2004
Где: Молдова

Репутация: нет
Всего: 1



Дрон
а val==1 не предусмотрен...
smile.gif


--------------------
Who dares, wins. (с) Solid Snake
PM MAIL ICQ YIM MSN   Вверх
Дрон
Дата 2.10.2004, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Цитата(lynx_916 @ 2.10.2004, 20:24)
а val==1 не предусмотрен...

В смысле??


--------------------
Да. Именно так.
PM   Вверх
Fixin
Дата 2.10.2004, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Действительно, ты чего - там же или больше или меньше нуля - куда-нибудь по-любому каждое число входит

Это сообщение отредактировал(а) Fixin - 2.10.2004, 21:43
PM MAIL ICQ   Вверх
lynx_916
Дата 3.10.2004, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 13.6.2004
Где: Молдова

Репутация: нет
Всего: 1



извините, недочитался, просто у меня когда-то такая же ошибка была ;)


--------------------
Who dares, wins. (с) Solid Snake
PM MAIL ICQ YIM MSN   Вверх
Crait
Дата 4.10.2004, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 244
Регистрация: 20.2.2003

Репутация: нет
Всего: 1



А по-мне, так лучше макрос

#define SIGNUM(Value) ((Value) < 0 ? (-1) : !!(Value))
PM MAIL   Вверх
Royan
Дата 4.10.2004, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Предлагаю свой, безопасный и универсальный вариант (на уникальность он не претендует) smile.gif

Код
template <typename T> int sgn(T type){
 if (static_cast<int>(type) < 0)
   return -1;
 else
   if (static_cast<int>(type) == 0)
     return 0;
   else
     return 1;
}



--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Дрон
Дата 4.10.2004, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Royan
Не согласен с static_cast<int>!!!
А если у нас есть, например, class Int32 и для него определены операторы отношения, то преобразовав его в int есть шанс получить абракадабру smile.gif smile.gif
Если же работаем со встроенными типами, то привидение вообще не нужно.

Цитата(Crait @ 4.10.2004, 15:09)
#define SIGNUM(Value) ((Value) < 0 ? (-1) : !!(Value))

А чему в таком случае будет равно значение переменной b?
Код
int a = 1;
int b = SIGNUM( a-- );

или если такая штука:
Код
int s = SIGNUM( function_that_works_about_five_minutes_to_return_a_value_);

Сколько времени потратится на вычисления? smile.gif
Макросы -- опасная штука exclamation.gif

Это сообщение отредактировал(а) Дрон - 4.10.2004, 19:50


--------------------
Да. Именно так.
PM   Вверх
lynx_916
Дата 6.10.2004, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 13.6.2004
Где: Молдова

Репутация: нет
Всего: 1



Цитата
int s = SIGNUM( function_that_works_about_five_minutes_to_return_a_value_);

7 минут! угадал? qstn.gif




--------------------
Who dares, wins. (с) Solid Snake
PM MAIL ICQ YIM MSN   Вверх
Royan
Дата 7.10.2004, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Цитата
А если у нас есть, например, class Int32 и для него определены операторы отношения, то преобразовав его в int есть шанс получить абракадабру 
Если же работаем со встроенными типами, то привидение вообще не нужно.

Я вынес подробности поднятой тобой проблемы в отдельный топик: http://forum.vingrad.ru/index.php?showtopic=31305


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.