不能在声明说明符中指定'long'和'float'

时间:2014-08-24 06:23:16

标签: c

在C中,我们使用数据类型intfloatcharlongshortlong int,{{1} },long long intdouble。 为什么我们不能使用long doublelong float

4 个答案:

答案 0 :(得分:4)

最初long long int不在语言规范中(long int是C中最大的有符号整数类型)。后来long long int被引入。也许有一天我们也会在C语言中看到long long long int,但那一天还未到来。

至于long float ......其中没有多大意义。下一个较大的浮点类型已经有一个名称,它被称为doublelong float就像long shortlong char

答案 1 :(得分:3)

有一次,long floatdouble的同义词,但C标准认为它是非法的。非符合模式的编译器仍有可能接受long float

你不能使用long long long int,因为还没有先例实现它(128位整数?),因为它会非常笨拙。

考古学

1978年出版的第一版K& R“C编程语言”有一个“C参考手册”版本,它有long并明确提及long float作为可能的类型之一。但是,正文似乎没有提及long float

UNIX版程序员手册(第7版)的第2A卷可在Bell Labs在线获得;它于1979年1月作为一个整体出版。它有一个版本的“C参考手册”,它没有引用关键字long,因此无法识别long float。 (请注意,尽管第2A卷的大多数章节都是单独提供的,但本章不是,但它包含在通过主页上的链接提供的PDF和Postscript版本中。鉴于单独的章节不适用于版权原因,我不能正式排除复合卷2A PDF中的章节实际上是“C参考手册”的早期版本的可能性。 更新:我找到了我的界限,打印,UNIX程序员手册第2卷(1983年出版,ISBN 0-03-061743-X)的发布版本,实际上,该章之前是'本手册,从 C编程语言 em>,作者:Brian W. Kernighan和Dennis M. Ritchie,Prentice-Hall,Inc.,1978。“它将long列为关键字。因此,PDF中提供的版本确实来自旧版本的“C参考手册”。较旧的版本很有用,因为它证实了我的主张long因此long float并非总是如此C语言的一部分。)

因此,在1978 - 1979年期间,C语言有些变化。结构赋值以及将函数传递和返回结构稍后添加,但仍远在C89标准之前。

答案 2 :(得分:1)

答案很简单,你在C中没有long floatlong long long int。语言设计师have not defined them将在C中使用。

另外,添加long等同于long int,就像short和short int一样。

在大多数32位平台上:

  • int指定为32位
  • long也被指定为32位
  • long long指定为64位

在大多数64位平台上:

  • int指定为32位
  • long指定为32位或64位
  • long long也指定为64位

旁注

long long 不是C89 / CC90的一部分,也不是C ++ 98或C ++ 03的一部分,但确实存在于C99(因此在C11中)和C ++ 11中(因此在C ++ 14中)。

答案 3 :(得分:1)

long float基本上(并且曾经是double的同义词)。将额外long s添加到整数类型必须在某处停止,并且64位是选择的折衷(因为它通常可在大多数处理器上直接表示)。