这可能只是cplusplus.com的符号不一致,但C ++中的“long int”和“long”类型之间有区别吗? cplusplus.com说abs接受“int”和“long”类型的输入,而labs使用“long int”。我认为这基本上是一个错字。如果是这样,那么abs和实验室之间唯一的区别是实验室可以保证返回很长时间吗?
答案 0 :(得分:13)
long
和long int
之间没有区别。
我们abs(long)
和labs(long)
(两者都相同)的原因是labs()
是C库的残余。 C没有函数重载,因此函数abs()
只能采用一种类型(int
),而long
必须以不同方式调用,因此labs
。
答案 1 :(得分:1)
他们是一样的。类似于“unsigned”和“unsigned int”。是的,在C ++中,abs()的重载需要很长的参数。 labs()对于C程序员来说是必需的,他们只能使用带有int的abs()函数。 C语言不支持函数重载。
答案 2 :(得分:1)
long int
与long
的类型相同。 abs
和labs
来自C,其中没有函数重载。 long abs(long)
与C ++中的long labs(long)
相同。例如,GCC已经
inline long abs(long __i) { return labs(__i); }
答案 3 :(得分:0)
long
和long int
是等效且可互换的。