【发布时间】:2021-05-24 16:53:09
【问题描述】:
所以我使用typedef unsigned char byte; 创建了一个自定义类型,然后声明了它的一个数组,就像使用byte mem[255]; 一样。我使用mem[0] = 0x10100000; 初始化第一个值,但是当我使用printf("%d", mem[0]); 打印它时,我得到0。为什么?
【问题讨论】:
-
0x10100000是一个 32 位值。你的意思可能是0xa0 -
0x10100000大大超过了unsigned char的存储容量您知道这不是二进制数,对吧?这是十六进制无符号文字。 -
如果你的编译器是非常新的并且支持即将到来的C23标准(或者有一个允许它的扩展)那么你可以使用二进制integer constants使用
0b前缀,如0b10100000。 -
@Someprogrammerdude,如果你不是那么幸运,你可以使用一些模板技巧来到达那里:C++ binary constant/literal。