AVR C++ uint32_t 奇怪的行为
AVR C++ uint32_t weird behaviour
uint32_t a = 65536;
uint32_t b = 1 << 16;
为什么a != b
在这里,但是
uint32_t a = 65536;
uint32_t b = 65536;
此处 a == b
虽然技术上应该相同?
我将 CLion 用作 IDE 并将 CMake 3.7.1 与 Arduino CMake 一起使用。
我必须将 1 转换为 uint32_t,以便有足够的字节将其移入。
uint32_t b = 1 << 16;
如您所见,如果您不首先将 1 转换为 32 位整数,则此操作会崩溃:
文字 1
是编译器的默认整数类型。不知道是哪个,但它是 8 位或 16 位整数。
现在,假设它是 16 位输入。当您将 1 左移 16 次时,您只是……好吧,这没有意义。所以,首先让你的 1
成为 32 位 int,然后再移位。
uint32_t a = 65536;
uint32_t b = 1 << 16;
为什么a != b
在这里,但是
uint32_t a = 65536;
uint32_t b = 65536;
此处 a == b
虽然技术上应该相同?
我将 CLion 用作 IDE 并将 CMake 3.7.1 与 Arduino CMake 一起使用。
我必须将 1 转换为 uint32_t,以便有足够的字节将其移入。
uint32_t b = 1 << 16;
如您所见,如果您不首先将 1 转换为 32 位整数,则此操作会崩溃:
文字 1
是编译器的默认整数类型。不知道是哪个,但它是 8 位或 16 位整数。
现在,假设它是 16 位输入。当您将 1 左移 16 次时,您只是……好吧,这没有意义。所以,首先让你的 1
成为 32 位 int,然后再移位。