uint8_t可以是非字符类型吗?
在
this answer和附加的注释中,Pavel Minaev提出以下参数,在C中,uint8_t可以被typedef的唯一类型是char和unsigned char.我正在查看
this draft的C标准.
> uint8_t的存在意味着存在相应的类型int8_t(7.18.1p1). 基于这个参数,我同意,如果uint8_t存在,那么它和unsigned char都具有相同的表示:8个值位和0个填充位.这似乎并不迫使它们是同一类型(例如,6.2.5p14). 是否允许将uint8_t typedef’d扩展为无符号整数类型(6.2.5p6),具有与unsigned char相同的表示形式?当然,它必须是typedef’d(7.18.1.1p2),它不能是除unsigned char之外的任何标准无符号整数类型(或char,如果它是没有符号的).这种假设的扩展类型不会是一个字符类型(6.2.5p15),因此不符合别名访问不兼容类型(6.5p7)的对象,因为编译器作者想要这样做事情.
如果uint8_t存在,则无填充要求意味着CHAR_BIT为8.但是,没有根本原因可以找到为什么uint8_t不能用扩展整数类型定义.此外,不能保证这些陈述是一致的;例如,位可以以相反的顺序解释.
虽然这对于uint8_t来说似乎是愚蠢和无礼的,但是对于int8_t来说,这可能是很有意义的.如果机器本身使用一个补码或符号/幅度,那么signed char不适用于int8_t.但是,它可以使用扩展的带符号整数类型来模拟二进制补码来提供int8_t. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Windows中运行Apache基准测试?
- 箭头键在Windows批处理文件中触发“暂停”两次
- windows下升级PHP到5.3.3的过程及注意事项
- windows-server-2008-r2 – 图形故障 – 作为远程应用程序的
- winapi – Windows中的CBT钩子……“CBT”代表什么?
- 即使在Windows SBS中,也始终是通往互联网的路径
- Qt 事件系统浅析 (用 Windows API 描述,分析了QCoreApplic
- HP ML350 Gen9安装Windows Server 2008 R2(官网文档)
- windows安装Redis并部署服务
- windows – 使用希腊语文本编译.Rnw到pdf