2011-04-21 63 views
1

我知道我能得到的INT 64具有較高的價值:如何設置int64的較低或較高值?

int32 higher = (int32)(iGUID >> 32); 

但是如何設置呢?

我這個嘗試過,但它說:「表達式必須是一個可修改」:

iGUID << 32 = inewlGUID; 

我需要保持其他值,(如果我設定的較高值,下應保持) 。

iGUID = (iGUID & 0xFFFFFFFF) | (inewlGUID << 32); 

回答

2

,同時保持較下層未修飾改變它的高32位。

您還可以獲取64位值的地址並將其轉換爲指向int32的指針,然後將其指定給下標並分配給它。但是,這通常是而不是,因爲它會使您的代碼依賴於平臺的字節順序。

0
iGUID = (static_cast<int64>(inewlGUID) << 32) | (iGUID & 0xffffffff); 

這將保留任何現有內容:

相關問題