Страниц: [1]
  Печать  
Автор Тема: Модуль для числа int64  (Прочитано 8482 раз)
Absolut
Full Member
***
Offline Offline

Сообщений: 179


Просмотр профиля
« : Октября 29, 2009, 05:39:29 pm »

Расскажите, если кто знает, почему нет функций типа abs() для long long.
У мелкомягких например присутствует http://msdn.microsoft.com/en-us/library/kw1ee768%28VS.80%29.aspx
Записан
oder
Гость
« Ответ #1 : Октября 29, 2009, 06:08:16 pm »

Потому, что stdlib.h, вообще, не пестрит функциями от long long.

Вот Вам моя реализация (бездвоздмездно - тоесть, даром).
Код:
static __inline long long int abs(long long int iArgument)
{
  return iArgument >= 0 ? iArgument : -iArgument;
}
« Последнее редактирование: Октября 29, 2009, 06:17:33 pm от mike » Записан
Absolut
Full Member
***
Offline Offline

Сообщений: 179


Просмотр профиля
« Ответ #2 : Октября 29, 2009, 06:10:09 pm »

Вот Вам моя реализация
С этим всё понятно, что реализуется просто. А вот почему "не пестрит" ?
Записан
darkelf
QOR.Moderator
*****
Offline Offline

Сообщений: 261


Просмотр профиля
« Ответ #3 : Октября 29, 2009, 06:11:40 pm »

Вот Вам моя реализация
С этим всё понятно, что реализуется просто. А вот почему "не пестрит" ?
Наверное, потому, что разные long long и int64 довольно таки недавние изобретения. имхо.
Записан
Absolut
Full Member
***
Offline Offline

Сообщений: 179


Просмотр профиля
« Ответ #4 : Октября 29, 2009, 06:19:29 pm »

Наверное, потому, что разные long long и int64 довольно таки недавние изобретения. имхо.
Но, согласитесь, запускать в реализацию новые типы без сервисных функций не совсем правильно.
Записан
darkelf
QOR.Moderator
*****
Offline Offline

Сообщений: 261


Просмотр профиля
« Ответ #5 : Октября 29, 2009, 06:32:31 pm »

Наверное, потому, что разные long long и int64 довольно таки недавние изобретения. имхо.
Но, согласитесь, запускать в реализацию новые типы без сервисных функций не совсем правильно.
Вообще, в стандарте C99, по крайней мере в его draft-е, есть llabs(), следующего вида:
Код:
long long int llabs(long long int j);

UPD: посмотрел в FreeBSD 6.4 - там llabs() есть, как и в FC6, так-что, видимо, это недеработка QSSL.
« Последнее редактирование: Октября 29, 2009, 06:39:29 pm от darkelf » Записан
ed1k
QOR.Moderator
*****
Offline Offline

Сообщений: 739


Просмотр профиля WWW
« Ответ #6 : Октября 29, 2009, 09:58:09 pm »

есть она там. в динкум библиотеке давно 6.3.2, а релиз нотах 6.4.0 они специально указали, что написали llabs()
с99 стандарт требует ей быть в stdlib.h
Записан
Absolut
Full Member
***
Offline Offline

Сообщений: 179


Просмотр профиля
« Ответ #7 : Октября 31, 2009, 12:20:09 am »

есть она там. в динкум библиотеке давно 6.3.2, а релиз нотах 6.4.0 они специально указали, что написали llabs()
с99 стандарт требует ей быть в stdlib.h
А ведь действительно есть. Смутило то, что она не описана в хелпе, и в пространстве имен std, как, например labs(), не наблюдается. А является глобальной.
Записан
Страниц: [1]
  Печать  
 
Перейти в: