问题标签 [stdint]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - stdint.h 和 inttypes.h 之间的区别
stdint.h 和 inttypes.h 有什么区别?
如果没有使用它们,则无法识别 uint64_t,但对于它们中的任何一个,它都是已定义的类型。
c - stdint.h 中这个神秘的宏加号是什么?
请看我的代码:
我发现其中的宏定义<stdint.h>
是:
这个加号的含义或意义是什么?
c++ - 位域与标准定义定义
所以我在用 C++ 编程,据我所知,没有与 stdint.h 等效的 C++。没问题,因为您可以获取 stdint 的副本并将其包含在内......但我的问题基本上是这样的,
这两段代码有什么区别:
和
除了位域的明显限制之外,是否存在性能/可移植性问题?哪个是首选?
c - 如何在 C 中打印 int64_t 类型
C99 标准具有字节大小的整数类型,如 int64_t。我%I64d
目前正在使用 Windows 的格式(或 unsigned %I64u
),例如:
我得到这个编译器警告:
我试过:
但我得到了同样的警告。我正在使用这个编译器:
我应该使用哪种格式来打印 my_int 变量而不会出现警告?
c - 在 C 中定义 16 位整数
我需要在 C 中声明一个 16 位大小的整数。
我知道 short 和 int 大小取决于机器。
我尝试使用"stdint.h",
,但似乎他们只是这样做
所以我的问题是:
我是否遗漏了什么并且短类型保证 16 位长度?
如果没有,是否有替代方案可以保证?
c - 使用(或不使用)stdint 的原因
我已经知道,stdint
当您需要特定的可变大小以实现平台之间的可移植性时,这已经习惯了。我现在真的没有这样的问题,但是除了上面已经显示的事实之外,使用它的缺点和优点是什么?
在 stackoverflow 和其他网站上寻找这个,我发现了 2 个关于主题的链接:
codealias.info - 这个是关于 stdint 的可移植性的。
stackoverflow - 这个更具体关于uint8_t。
如果您希望了解更多有关此标头可移植性的主要原因,这两个链接特别有用。但对我来说,我最喜欢它的是我认为uint8_t
它比unsigned char
(例如用于存储 RBG 通道值)更干净,int32_t
看起来比简单的更有意义int
,等等。
stdint
所以,我的问题是,除了便携性之外,使用的优缺点到底是什么?我应该只在代码的某些特定部分还是在任何地方使用它?如果无处不在,我怎样才能使用像atoi()
,strtok()
等这样的功能呢?
谢谢!
c - C: gcc 中的 uint16_t 减法行为
我正在尝试减去两个无符号整数并将结果与有符号整数(或文字)进行比较。使用unsigned int
类型时,行为符合预期。使用uint16_t
(from stdint.h
) 类型时,行为不是我所期望的。比较是使用 gcc 4.5 完成的。
给定以下代码:
输出为 0,这是我的预期。a 和 b 都是无符号的,并且 b 大于 a,因此结果是一个大于 10 的大无符号数。现在如果我将 a 和 b 更改为 uint16_t:
输出为 1。这是为什么呢?两个 uint16_t 类型之间的减法结果是否存储在 gcc 的 int 中?如果我将输出更改10
为10U
0,这似乎支持这一点(如果减法结果存储为 int 并且与 unsigned int 进行比较,则减法结果将转换为 unsigned int)。
c - 最佳实践:在头文件中使用 stdint 类型
确保stdint.h
包含使用该标头类型的标头的最佳方法是什么?
我可以看到的替代方案是:
- 包括
stdint.h
标题本身(危险,不是吗?) - 如果在解析标头时未包含某些内容,则将其标记给编译器(例如
#ifndef _STDINT_H
附带#error "stdint.h not included"
- 教育其他开发人员始终包括
stdint.h
在我需要它的任何标题之前,无论是使用评论、对话、文档还是三者的混合(最后一个更可取)。
如果还有其他值得一提的替代方案,请随意这样做 - 我只是在猜测我应该在这里做什么。
c++ - 为什么可以找到 stdint.h 而找不到 cstdint?
我对包含 stdint.h 的作品感到惊讶,但不包含 cstdint。
与 g++ 相同:
我可以问为什么吗?而且,除了更新编译器,有什么方法可以解决这个问题吗?谢谢你。
c - 相当于 stdint.h 中的双倍?
我试图找出通过 c89 的方法,现在我遇到了这个问题。stdint.h
双数据类型是否有任何等价物?如果是,我们如何打印?