是否有8位值的文字后缀?

时间:2018-05-31 07:30:13

标签: c literals xc8

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

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

123U:unsigned int也是16位宽

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

3 个答案:

答案 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将123123u标识为整数常量,而非文字

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

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

// expected output
1 123

IDK,如果xc8支持复合文字

答案 2 :(得分:0)

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