0
我想知道從較小的有符號整數到較大的無符號整數的類型轉換。看起來,編譯器首先將有符號整數轉換爲與目標相同大小的有符號整數,然後轉換爲無符號整數。C++有符號整數轉換爲無符號位數更多位
方面的以下C++代碼:
#include <assert.h>
#include <iostream>
typedef int sint;
typedef unsigned __int64 luint;
int main(int, char**) {
assert(sizeof(luint) > sizeof(sint));
sint i = -10;
luint j = i;
std::cout << std::hex << j;
}
在Visual C++中,這得到:fffffffffffffff6
。
這就像我喜歡它。我能確定所有的編譯器都會這樣嗎?如果有符號整數先轉換爲無符號,然後轉換爲新的大小,那麼結果應該是fffffff6
。
該標準的一部分需要重新閱讀,但現在對我來說是有意義的!謝謝。 – cxxl
對不起,我可以補充說:「我能確定所有的編譯器都會這樣嗎?」是「是的,它由標準保證」=) –