- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 mplabX 4.20 和 xc8 编译器。我试图了解 uint8_t 和 unsigned char 之间的区别。它们的大小都是从 0 到 255。两者都可以容纳字符和数字。但哪个更好用,适用于哪种情况?
示例,如果我想创建一个用于保存字符串的缓冲区。
uint8_t buffer[20]="Hello World";
unsigned char buffer[20]="Hello World";
在大多数情况下,我需要保存字符。执行此操作的最佳做法是什么?
最佳答案
I'm using mplabX 4.20, and xc8 compiler. I'm trying to understand which is the difference between uint8_t and unsigned char. Both of them have size from 0 till 255. Both of can hold characters and numbers. But which is better to use, and for which case?
unsigned char
是signed char
对应的无符号整数类型。它的表示不使用任何填充位。这两者都占用与 char
类型相同的存储量,至少 8 位,但可能更多。宏 CHAR_BIT
告诉您它在您的实现中包含了多少。每个符合标准的 C 实现都提供所有这些类型。
uint8_t
(如果可用)是一种无符号整数数据类型,恰好 8 位宽且没有填充位。在将 CHAR_BIT
定义为 8 的实现中,这与 unsigned char
的类型相同。在此类系统上,只要 stdint.h
提供的声明在范围内,您就可以互换使用这两种类型。在其他系统上,uint8_t
根本不会被声明。
Example if i want to create a buffer for holding a string.
如果你想声明一个缓冲区来保存一个字符串,那么作为一种风格,你应该使用 char
类型,而不是其他两种:
char buffer[20] = "Hello World";
虽然另外两个,或者signed char
,也可以用于字符串数据(前提是在uint8_t
的情况下完全定义了类型) , char
类型是用于字符数据的常规类型。例如,证明所有 string.h
函数都是根据该类型声明的。
您应该在且仅在您需要具有其属性的整数类型时使用 uint8_t
:无符号、8 个值位、无填充位。
您应该在需要可用的最小无符号整数类型的地方使用unsigned char
,但您不关心它是否恰好是 8 位宽,或者您想强调它是相同的大小为 char
-- 可用的最小离散存储单元。
您应该在需要可用的最小有符号整数类型但不关心确切大小或表示形式的地方使用 signed char
。
您应该使用 int8_t
,如果您想要一个有符号整数类型,正好有 7 个值位,一个符号位,没有填充位,用二进制补码表示。
您应该注意 uint8_t
和 int8_t
不能保证在每个 C 实现中都可用,并且在它们可用的情况下,它们的使用需要包含 stdint.h
。此外,此 header 和这些类型根本不是 C90 的一部分,因此如果与旧 C 实现的兼容性对您很重要,则不应使用它们。
关于c - uint8_t 和 unsigned char 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53282274/
我不知道下面的代码有什么问题,它应该读取数字并将它们的值与位置放在一个成对的 vector 中,然后对它们进行排序并打印出位置。我用 sort 删除了部分 - 我认为问题就在那里,但我再次收到编译错误
我相信当您将两个 unsigned int 值相加时,返回值的数据类型将是 unsigned int。 但是两个 unsigned int 值相加可能会返回一个大于 unsigned int 的值。
我从左移得到的结果我找不到解释。 unsigned char value = 0xff; // 1111 1111 unsigned char = 0x01; // 0000 0001 std::c
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
根据:http://en.wikipedia.org/wiki/C_data_types您可以使用 unsigned short 类型或 unsigned short int 类型。但是它们之间有什么
我正在尝试在 arduino 草图中实现 CRC16。从网上拿到了crc.c文件,想试试看。我创建了其他文件以允许 crc.c 正确运行。这是我的文件。 crc.h: #ifndef CRC_C_ #
我正在尝试实现一个将存储相关索引的列表。但是,我在标题中提到的 for (index_itr = (list_size - numberOfEvents - 1) 处遇到错误。我在做什么错误,以及如何
这不是跨平台代码...所有内容都在同一平台上执行(即字节序是相同的......小字节序)。 我有这个代码: unsigned char array[4] = {'t', 'e', 's', '
我有一个 8 位 unsigned char vector 和一个 16 位 unsigned short vector std::vector eight_bit_array; std::vecto
这个问题在这里已经有了答案: Is subtracting larger unsigned value from smaller in C++ undefined behaviour? (2 个答案
这个问题已经有答案了: Difference between unsigned and unsigned int in C (5 个回答) 已关闭 6 年前。 在 C 语言中,unsigned 之间有
我遇到了一个我不太理解的警告。该警告是通过比较我认为是一个未签名的内容与另一个未签名的内容而生成的。 来源如下: #include #include #include #include int
好吧,这一定很愚蠢。我在移动一些代码时遇到了这个问题,并认为我打错了字或未能正确使用调试器。作为健全性检查,我创建了这个测试用例,但它似乎仍然失败。 unsigned int vtxIdx
我有一个同事不热衷于使用现代 C++ 例如,当我要求他开始使用 r_value 引用时,他不会这样做。当我要求他使用 std::array 而不是 c 数组(char example[8])时,他不会
我有一个无符号字符数组,例如Data[2]。我需要它来与返回 unsigned int 的函数的输出进行比较。 我尝试将 Data[2] 转换为 unsigned int,反之亦然。它没有用。 我想做
我遇到了一个我不太明白的警告。警告是通过将我认为是未签名的与另一个未签名的进行比较而生成的。 这是来源: #include #include #include #include int mai
在下面的程序中,我使用了 unsigned 关键字。 #include int main() { unsigned char i = 'A'; unsigned j
整数值转换为浮点值并再次返回时是否与原始整数值相同? 例如: unsigned x = 42; double y = x; unsigned z = y; 假设编译器没有优化浮点转换,x == z 是
这个问题在这里已经有了答案: Difference between unsigned and unsigned int in C (5 个答案) 关闭 9 年前。 我理解 unsigned 和 un
您好,我遇到了一个关于位运算的小概念问题。请参阅下面的代码,其中我有一个 4 字节的无符号整数。然后我通过将地址分配给无符号字符来访问各个字节。 然后我将最后一个字节的值设置为 1。并对 unsign
我是一名优秀的程序员,十分优秀!