所以新的C++數據類型和我看到的東西很奇怪,我不能在互聯網上找到答案:C++的無符號長整型插入STL容器和打印回怪事
std::set<unsigned long> test;
test.insert(7788994347298743234);
test.insert(0113);
std::set<unsigned long>::iterator it;
for(it = test.begin(); it != test.end(); it++) {
std::cout << *it << std::endl;
}
輸出:
這是一組具有 「unsigned long int類型」 爲元素類型,其具有0到4,294,967,295的範圍內。現在爲什麼:
像7788994347298743234這樣的大數字仍然適合設置就好,並打印出來?當你試圖插入一些溢出指定類型容器的數據時,C++的行爲是什麼?它不會拒絕並在插入時返回false?底層使用比32位更多的內存來存儲數據?
以前導零開頭的任何數字都是無效的?什麼隱式類型轉換已經完成使0113變成75?
我問這些,因爲如果我的設置需要存儲,可能有什麼樣的元素任意前導零,也就是說,CRC32散列的結果(當然只是扔在這裏例子,不知道是否這實際上適用.. 。)?謝謝!
'unsigned long類型int'不能保證有一個範圍。整數字面量的[引用](http://en.cppreference.com/w/cpp/language/integer_literal)不會花太長時間來搜索以零開始的內容。 – chris 2015-03-30 21:16:03
看到http://stackoverflow.com/questions/29325822/c-int-with-preceding-0-changes-entire-value – juanchopanza 2015-03-30 21:16:17
謝謝你們這些鏈接幫助! – Superziyi 2015-03-30 21:27:34