我正在使用xc8编译器,并想告诉他我的文字只有8位宽。
123
:无后缀,默认int(xc8中的16位)
123U
:unsigned int也是16位宽
有什么想法用于描述8位字面的干净解决方案吗?
答案 0 :(得分:1)
C中没有8位文字。最接近的是stdint.h中的UINT8_C(123)
,它为您提供了最适合uint_least8_t
类型变量的文字。它很可能会扩展到123U
。
至于如何实际解决这个问题,你将常量显示到一个定义中,你应该做什么:
#define NUMBER_8BIT ( (uint8_t)123 )
答案 1 :(得分:0)
有什么想法用于描述8位字面的干净解决方案吗?
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支持复合文字。
答案 2 :(得分:0)
将类型转换为(无符号字符)