[英]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,使用帶有Arduino CMake的CMake 3.7.1。
uint32_t b = 1 << 16;
正如您所注意到的,如果您不先將1轉換為32位整數,則會出現故障:
文字1
是編譯器上的默認整數類型。 不知道哪個,但它是8位或16位int。
現在,假設它是16位。當你向左移動16次時,你只是......好吧,它沒有意義。 所以,首先讓你的1
為32位int,然后轉換。
我必須將1轉換為uint32_t,以便有足夠的字節將其移入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.