“long long”是什么数据类型?

38

我不知道这是什么类型。它是否是所有类型中最大的?我认为它是整数类型,对吗?或者它是浮点数类型?比double还要大吗?

2个回答

43
根据C99标准,long long是一种整数类型,至少为64位宽。规定了两种64位整数类型: long long intunsigned long long int
因此,是的,这是C语言标准(C99版本)规定的最大整数类型。
C99还指定了long double类型。它是一种扩展精度浮点数数据类型,在大多数流行的基于x86的平台和C语言实现中长达80位。

2
"long double" 在某些情况下也可以表示(非常需要的)128位四倍精度浮点类型。C类型是并且仍然是一个史诗般的“没有假设因为灵活性”荒谬混乱的问题。 - David Tonhofer
1
标准的引用(第38页):“C99因此采用了long long作为至少具有64位精度的整数类型的名称。人们可以争论和讨论关于特定名称的选择,但早期选择一个明显更好的名称一直很困难,而现在它已经相当普遍,并且可能被视为最不差的选择之一。” - Isacc Barker

13

long long是至少64位宽度的int。其简短而简单的解释是为了响应64位架构和向后兼容性。您可以在这里查看相关原因。而名称long long是标准委员会认为最不差的选择。


1
那个理论文件让我头痛欲裂。我简直无法相信,这么多计算机领域的事情都被一些混乱无序的人所掌控。 - iono
文件的第37页,对于那些感兴趣的人来说。 - oromoiluig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接