1

我正在使用 xc8 编译器并想告诉他我的文字只有 8 位宽。

123 : 无后缀,默认 int(xc8 中为 16 位)

123U :unsigned int 也是 16 位宽

对于描述 8 位文字的干净解决方案有什么想法吗?

4

3 回答 3

1

对于描述 8 位文字的干净解决方案有什么想法吗?

C 只有两种文字字符串文字复合文字 (C99)。C 将123和标识123u整数常量,而不是文字

要形成 C 8 位文字:制作复合文字

#define OneTwoThree ((uint8_t) { 123 })
printf("%zu %x\n", sizeof(OneTwoThree), OneTwoThree);

// expected output
1 123

IDK 如果 xc8 支持复合文字

于 2018-05-31T14:11:54.650 回答
0

类型转换为(无符号字符)

于 2018-09-20T10:42:33.363 回答
0

C 中没有 8 位文字。您可以获得的最接近的东西UINT8_C(123)来自 stdint.h,它为您提供了最适合类型变量的文字uint_least8_t。很可能会扩大到123U.

至于如何实际解决这个问题,您将常量显示为定义,无论如何您都应该这样做:

#define NUMBER_8BIT ( (uint8_t)123 )
于 2018-05-31T07:42:04.503 回答