разница между "long" и "long int", abs & labs - PullRequest
3 голосов
/ 22 июля 2010

Это, вероятно, просто несогласованность обозначений на cplusplus.com , но есть ли разница между типами "long int" и "long" в C ++? cplusplus.com говорит, что abs принимает входные данные типов «int» и «long», тогда как labs использует «long int». Я предполагаю, что это в основном опечатка. Если так, то является ли единственной разницей между abs и labs, что лаборатории гарантированно вернут long?

Ответы [ 4 ]

13 голосов
/ 22 июля 2010

Нет никакой разницы между long и long int.

Причина, по которой мы имеем abs(long) и labs(long) (хотя оба эквивалентны), заключается в том, что labs() является остатком Cбиблиотека.В C нет перегрузки функций, поэтому функция abs() может принимать только один тип (int), а long следует вызывать по-разному, поэтому labs.

1 голос
/ 22 июля 2010

long int соответствует типу long.abs и labs от C, где нет перегрузки функций.long abs(long) совпадает с long labs(long) в C ++.Например, GCC имеет

inline long abs(long __i) { return labs(__i); }
1 голос
/ 22 июля 2010

Они одинаковы. Похож на «unsigned» и «unsigned int». Да, в C ++ есть перегрузка для abs (), которая принимает длинный аргумент. labs () необходима программистам на C, они могут использовать только функцию abs (), которая принимает int. Язык C не поддерживает перегрузку функций.

0 голосов
/ 22 июля 2010

long и long int эквивалентны и взаимозаменяемы.

...