- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果您需要一个计数变量,那么您的整数肯定必须有一个上限和下限。那么为什么不通过选择适当的 (u)int_fastxx_t 数据类型来指定这些限制呢?
最佳答案
最简单的原因是人们更习惯于 int
,而不是 C++11 中引入的附加类型,并且它是语言的“默认”整数类型(C++ 有一个);该标准在 [basic.fundamental/2]
中规定:
Plain ints have the natural size suggested by the architecture of the execution environment46; the other signed integer types are provided to meet special needs.
46) that is, large enough to contain any value in the range of
INT_MIN
andINT_MAX
, as defined in the header<climits>
.
int
。虽然使用其他类型可以更清楚地传达意图(例如,使用
int8_t
表示该值不应超过
127
),但使用
int
还传达了这些细节对手头的任务并不重要,同时提供了一些捕捉的余地超出您所需范围的值(例如,如果系统使用模运算处理有符号溢出,
int8_t
会将
313
视为
57
,从而使无效值更难以排除故障);通常,在现代编程中,它要么表示该值可以用系统的字长(
int
应该表示的)表示,要么表示该值可以用 32 位表示(这几乎总是 x86 上
int
的大小)和 x64 平台)。
intX_t
行仅在支持正好 X 位大小的平台上定义。虽然保证在所有平台上都定义了
int_leastX_t
类型,并且保证至少为 X 位,但如果不需要,很多人不会想要输入那么多,因为它会在您需要时加起来经常指定类型。 [您不能使用
auto
,要么是因为它将整数文字检测为
int
s。这可以通过使用用户定义的文字运算符来缓解,但这仍然需要更多的时间来输入。] 因此,如果这样做是安全的,他们通常会使用
int
。
int
旨在成为正常操作的首选类型,而其他类型旨在用于超常情况。许多程序员出于习惯坚持这种心态,并且仅在明确要求特定范围和/或大小时才使用大小类型。这也相对较好地传达了意图;
int
表示“数字”,
intX_t
表示“始终适合 X 位的数字”。
int
,因此
int
已经演变为非官方的意思是“32 位整数”,这无济于事。许多程序员很可能希望
int
在现代始终至少是 32 位,以至于如果他们必须为不支持 32 位
int
的平台编程,很容易在后面咬他们.
struct
时。在内存有限的情况下,使用可以完全包含所需范围的最小类型,它们也可以证明是有用的。
struct
将使用
int16_t
或
int32_t
而不是
int
,因为
int
在大多数 16 位数据模型和 LP32 32 位数据模型中是 16 位(由 Win16 API 和 Apple Macintoshes 使用),但在 ILP32 32 位数据模型中为 32 位(由 Win32 API 和 *nix 系统使用,有效地使其成为事实上的“标准”32 位模型)。
struct
将在
int
上使用
int32_t
/
long long
或
int64_t
/
long
,因为
long
在不同模型中具有不同的大小(LP64 中的 64 位(由 64 位使用) *nix)、LLP64 中的 32 位(由 Win64 API 使用)和 32 位模型)。
int
是 64 位;这个模型很少使用(据我所知,它只在早期的 64 位 Unix 系统上使用),但如果需要与 ILP64 平台的布局兼容性,它将强制使用
int
上的大小类型。
关于c++ - 在新代码中,为什么要使用 `int` 而不是 `int_fast16_t` 或 `int_fast32_t` 作为计数变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43441579/
根据在线文档,这些固定宽度整数类型之间存在差异。对于 int*_t,我们将宽度固定为 * 的值。然而对于其他两种类型,描述中使用形容词最快和最小来请求底层数据模型提供的最快或最小实例。 “最快”或“最
我是 Python 注释的新手(类型提示)。我注意到 pyi 中的许多类定义文件继承到 Generic[_T] , 和 _T = TypeVar('_T') . 我很困惑,_T 是什么意思?这里的意思
这个问题在这里已经有了答案: How to use a variable inside a _T wrapper? (3 个答案) 关闭 7 年前。 我有以下代码: CString port = m
要包含 _T() 宏,我应该包含什么文件?它转换我认为的文本文字。我以为它是 windows.h,但我已经包含了它。 令人惊讶的是,我无法在 Google 上找到答案。 最佳答案 我在主题 Unico
类型的后缀 _t 由 POSIX 保留,但是如果我在自己的命名空间中使用 _t 后缀定义自己的类型怎么办? 最佳答案 我同意 user6366161 的 answer,其中说“C 对 namespac
我知道 size_t 有 _t 后缀,因为它的别名/typedef。但是我不明白为什么 char16_t, char32_t 和 wchar_t 包含 _t 后缀。 最佳答案 对于 wchar_t :
我想让这个字符串的主机名部分可变..目前,它只修复了这个 URL: _T(" --url=http://www.myurl.com/ --out=c:\\current.png"); 我想做这样的东西
这个问题在这里已经有了答案: convert string to _T in cpp (6 个答案) 关闭 7 年前。 string pagexx = "http://website.com/" +
我有一个注册为 COM 对象的 .net 库,当在 C++ 项目中导入 .tlb 文件时,我得到这样的方法声明 virtual HRESULT __stdcall GetBid ( /*[
我现在遇到了很多 Unicode 问题。据我了解,TCHAR 被定义为 wchar_t 或 char,具体取决于 _UNICODE 是否在某处定义,并且还有各种其他功能可以帮助解决这个问题。显然 _T
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我正在尝试使用 _t() 方法翻译一个 DataObject。 我一直在 Pages 上使用它没有问题,但它似乎不适用于数据对象。 class SliderItem extends DataObjec
关于保留 _t 结尾名称的规则是否也适用于作用域名称(例如,在 namespace 或类中定义的类型和类型定义),还是仅适用于全局 namespace 中的类型和类型定义?标准 C/C++ 库或 PO
我确定以前有人问过这个问题,但我无法搜索到文本。如果有人可以解释它们,请给我推荐一篇文章,或者给我正确的搜索查询,我将不胜感激。 谢谢。 最佳答案 这只是一种预感,但看看 Wikipedia C++1
我有一个 UNICODE 应用程序,我们使用 _T(x) 定义如下。 #if defined(_UNICODE) #define _T(x) L ##x #else #define _T(x) x #
我一直想知道是否存在任何命名约定,例如何时对类型使用 ALLCAPS 以及何时附加 _t(以及何时不使用任何东西?)。我知道以前 K&R 发布了各种关于如何使用 C 的文档,但我找不到任何相关内容。
这似乎是一个简单的问题,但我无法通过 Stack Overflow 搜索或 Google 找到它。类型后跟 _t 是什么意思?比如 int_t anInt; 我在 C 代码中经常看到它与硬件密切相关—
C++ 有时使用后缀 _type关于类型定义(例如 std::vector::value_type ),有时_t (例如 std::size_t ),或者没有后缀(普通类,还有像 std::strin
字符串中的“T”代表什么。例如 _T("Hello")。我在需要 unicode 支持的项目中看到了这一点。它实际上告诉处理器什么 最佳答案 _T 代表“文本”。当且仅当您使用 Unicode 支持编
我的代码可以根据 C++ 类型识别您需要使用的 GL 类型。我想制作它的 _t 版本(如 std::decay_t 或 std::enable_if_t)但公开 int常量值 template st
我是一名优秀的程序员,十分优秀!