[英]left shift error
我有一個unsigned long long
變量,我的系統上有8個字節,我正在嘗試執行以下操作:
unsigned long long ull;
ull = timeLow;
ull |= timeHigh << 32;
我收到一個警告:左移計數> =這樣做時的類型寬度。 此外它似乎沒有考慮到時間偏移。我該如何解決這個問題?
你不是轉移ull
,你shifiting timeHigh
,然后存儲在移位的結果ull
。
我懷疑timeHigh
是沒有大到足以存儲一個32位的移位的reults。 讓timeHigh
一個unsigned long long
,( 編輯 ),或者只分配timeHigh
到ull
,然后轉移之前or
“ING在timeLow
。 (信用@JasonD)
timeHigh似乎是32位類型。 在32位左移后,它全部為零。 你必須在轉移之前將timeHigh轉換為很長的類型。
unsigned long long ull;
ull = timeHigh;
ull = ull << 32;
ull |= timeLow;
這是你的意思嗎?
unsigned long long timeLow = /* value */;
unsigned long long timeHigh = /* value */;
unsigned long long ull;
ull = (timeHigh << 32 | timeLow)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.