8 位值是否有文字后缀?
Is there a literal suffix for 8 Bit values?
我正在使用 xc8 编译器并想告诉他我的文字只有 8 位宽。
123
:无后缀,默认int(xc8中为16位)
123U
:unsigned int 也是 16 位宽
有没有关于描述 8 位文字的干净解决方案的想法?
C 中没有 8 位文字。您可以获得的最接近的东西是 stdint.h 中的 UINT8_C(123)
,它为您提供了最适合 uint_least8_t
类型变量的文字.它很可能会扩展到 123U
.
至于如何实际解决这个问题,您将常量显示在定义中,无论如何您都应该这样做:
#define NUMBER_8BIT ( (uint8_t)123 )
Any idea for a clean solution to describe a 8 bit literal?
C 只有 2 个文字:字符串文字 和复合文字 (C99)。 C 将 123
和 123u
标识为 整数常量 ,而不是 文字 .
要形成一个 C 8 位文字:制作一个 复合文字
#define OneTwoThree ((uint8_t) { 123 })
printf("%zu %x\n", sizeof(OneTwoThree), OneTwoThree);
// expected output
1 123
IDK 如果 xc8 支持 复合文字。
类型转换为(无符号字符)
我正在使用 xc8 编译器并想告诉他我的文字只有 8 位宽。
123
:无后缀,默认int(xc8中为16位)
123U
:unsigned int 也是 16 位宽
有没有关于描述 8 位文字的干净解决方案的想法?
C 中没有 8 位文字。您可以获得的最接近的东西是 stdint.h 中的 UINT8_C(123)
,它为您提供了最适合 uint_least8_t
类型变量的文字.它很可能会扩展到 123U
.
至于如何实际解决这个问题,您将常量显示在定义中,无论如何您都应该这样做:
#define NUMBER_8BIT ( (uint8_t)123 )
Any idea for a clean solution to describe a 8 bit literal?
C 只有 2 个文字:字符串文字 和复合文字 (C99)。 C 将 123
和 123u
标识为 整数常量 ,而不是 文字 .
要形成一个 C 8 位文字:制作一个 复合文字
#define OneTwoThree ((uint8_t) { 123 })
printf("%zu %x\n", sizeof(OneTwoThree), OneTwoThree);
// expected output
1 123
IDK 如果 xc8 支持 复合文字。
类型转换为(无符号字符)