我知道C和C++标准只定义了语言实现的许多方面,仅仅因为如果有一个具有其他特性的体系 struct ,那么编写一个标准的编译器就很困难或不可能.

我知道40年前任何一台计算机都有自己独特的规格.然而,我不知道今天使用的任何体系 struct :

  • CHAR_BIT != 8
  • signed不是2的补码(我听说Java对这个有问题).
  • 浮点不符合IEEE 754(编辑:我的意思是"不采用IEEE 754二进制编码").

我要问的原因是,我经常向人们解释,C++没有授权任何其他低级别的方面,比如固定大小的类型 .这很好,因为与"其他语言"不同,它可以让代码在正确使用时具有可移植性(编辑:因为它可以移植到更多的体系 struct ,而不需要模拟机器的低级方面,例如符号+量级体系 struct 上的两个补码算法).但我感到遗憾的是,我自己无法指出任何具体的架构.

所以问题是:哪些建筑展示了上述特性?

uint*_t是可选的.

推荐答案

看看这个

Unisys ClearPath Dorado Servers

为尚未迁移其所有Univac软件的用户提供向后兼容性.

要点:

  • 36位字
  • CHAR_BIT == 9
  • 补语
  • 72位非IEEE浮点
  • 代码和数据的单独地址空间
  • 地址
  • 没有专用堆栈指针

不知道他们是否提供了C++编译器,但是它们是could.


现在,指向他们最新版本的C语言手册的链接浮出水面:

Unisys C Compiler Programming Reference Manual

第4.5节有一个9、18、36和72位的数据类型表.

C++相关问答推荐

ARM上的Modulo Sim Aarch 64(NEON)

海湾合作委员会是否保证大小匹配的访问?

Apple Libm的罪恶功能

如何解决C中的严格别名?

我编译了一个新的c程序,并收到以下错误

C是否用0填充多维数组的其余部分?

向上强制转换C中的数值类型总是可逆的吗?

为什么该函数不将参数值保存到数据 struct 中?

C在声明带有值的数组时,声明大小有用吗?

Flose()在Docker容器中抛出段错误

在编写代码时,Clion比vscode有更多的问题指示器

如何在C-函数中混合使用C代码和ASM?

如何在双向表中实现线程安全,每个条目仅使用4位,同时避免任何全局锁?

使用C++中的字符串初始化 struct 时,从‘char*’初始化‘char’使指针变为整数,而不进行强制转换

Matlab/Octave对conv2函数使用哪种方法?

C语言中的指针和多维数组

我可以使用Windows SDK';s IN6_IS_ADDR_LOOPBACK等,尽管没有文档?

%g浮点表示的最大字符串长度是多少?

C struct 中的冒泡排序

我该如何处理这个 C 90 代码中的内存泄漏?