從下面的代碼我期望x中的所有位設置爲1,但不知何故只有前32個位被設置:設置所有位中的int64_t
int64_t x = 0xFFFFFFFF;
x<<32;
x|=0xFFFFFFFF;
注:4294967295每一行結果後打印X(32低位設置爲1)。 另外,嘗試使用numeric_limits<int64_t>::min()
沒有成功。 我的問題是如何設置x中的所有位? 使用RHEL5.5。
THX
從下面的代碼我期望x中的所有位設置爲1,但不知何故只有前32個位被設置:設置所有位中的int64_t
int64_t x = 0xFFFFFFFF;
x<<32;
x|=0xFFFFFFFF;
注:4294967295每一行結果後打印X(32低位設置爲1)。 另外,嘗試使用numeric_limits<int64_t>::min()
沒有成功。 我的問題是如何設置x中的所有位? 使用RHEL5.5。
THX
爲什麼不是int64_t x = -1
?或uint64_t x = ~0
?
實際上發佈後,你是完全正確的。謝謝 – 2013-05-02 23:24:32
這將工作:
int64_t x = ~0LL; (iner
或
int64_t x = -1LL;
你可以逃脫不具有LL
,但不能保證 - 依賴於編譯器。
而且,你可能會得到LL :)(「取決於編譯器」,雖然128位long long不會有一段時間) – 2013-05-02 23:39:26
你是怎麼打印它的? – Mysticial 2013-05-02 23:15:11
如果一切都失敗了,我真的認爲是因爲它不好看,memset(&x,0xFF,8)'。 – ssube 2013-05-02 23:15:51
建立流串並打印它,沒有精度。假設打印是好的,我在代碼 – 2013-05-02 23:16:55