让战斗开始吧..
另一个question已经开始了有关char的激烈讨论,以及实现带有trap representations的可能性。
问题:

  • char可能有陷阱值吗?

  • 在前面的讨论中已经提到的报价:
    这些部分是上一论点中引用最多的部分,它们是否矛盾?


    最佳答案

    该标准告诉我们必须有:

  • char,有符号字符,无符号字符,所有大小均相同
  • sizeof(char)为1
  • char至少有8位
  • 每一位组合都是有意义且有效的
  • char的
  • 数组被打包(或者如果是,则表现为)。

  • 摆动空间不大。

    不过,有人建议在某些类型的操作期间(例如,加载未初始化的内存或转换为陷阱)可能会发生。

    是的,我认为一个实现可以具有陷阱表示形式,其中陷阱值可能由于某种未定义或未指定的行为而出现,包括评估涉及未指定/未初始化的值的表达式。导致陷阱值的实际位模式对实现不可见。

    这样的CPU可能有9位字节,其中编译器和运行时仅可见8位,而第9位用于检测未初始化的内存,如果被(未特权)指令加载,则会触发陷阱。

    关于c++ - 一个简单的 `char`可以有陷阱值吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24034296/

    10-11 23:00