首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++11数据类型混淆

C++11数据类型混淆
EN

Stack Overflow用户
提问于 2017-03-22 09:29:12
回答 4查看 605关注 0票数 2

我试图为C++数据类型编写一个可靠的摘要,但是对于新的数据类型我有些困惑。

正如我从有关C++数据类型的阅读资料中了解到的,char16_tchar_32_t是自C++11以来的基本数据类型和核心语言的一部分。

提到它们是不同的数据类型。

Q1:在这里“不同”到底是什么意思?

Q2:为什么选择像int32_t这样的intxx_t类型家族不是一种基本的数据类型?当选择它们而不是int时,它们怎么可能是有益的?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-22 10:35:51

要回答问题的第二部分:

固定大小的整数类型是从C继承而来的,其中它们是typedef的,因此决定将它们作为typedefs保持兼容。请注意,C语言没有重载函数,因此对“不同”类型的需求较低。

使用int32_t的一个原因是您需要它的一个或多个所需的属性:

带符号整数类型,宽度为32位,没有填充位,负值使用2的补码。

如果你使用一个int,它可能是,例如,是36位,使用1的补充。

但是,如果您没有非常具体的需求,那么使用普通的int就可以了。一个优点是,int可以在所有系统上使用,而36位机器(或24位嵌入式处理器)可能根本没有任何int32_t

票数 4
EN

Stack Overflow用户

发布于 2017-03-22 09:39:16

charXX_t类型在N2249中被引入。它们是作为与uintXX_t不同的类型创建的,以允许重载:

char16_t定义为一种独特的新类型,其大小和表示形式与uint_least16_t相同。同样,将char32_t定义为一个独特的新类型,其大小和表示形式与uint_least32_t相同。 N1040将char16_tchar32_t定义为uint_least16_tuint_least32_t的类型,从而使这些字符无法重载。

票数 4
EN

Stack Overflow用户

发布于 2017-03-22 09:52:23

要回答您的Q1:

不同类型意味着std::is_same<char16_t,uint_least16_t>::value等于false

所以过载的函数是可能的。

(但在大小、签名和对齐方面没有差别。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42947460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档