簡體   English   中英

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,使用帶有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM