我在調試別人的代碼之中,我有這樣的代碼奇怪的內存覆蓋問題
int i = their_val;
std::cout << "output: " << i << std::endl;
當我看到日誌輸出我看到像
output: a
線
這是否應該發生?有什麼改變cout格式或可能是一些奇怪的東西?
我在調試別人的代碼之中,我有這樣的代碼奇怪的內存覆蓋問題
int i = their_val;
std::cout << "output: " << i << std::endl;
當我看到日誌輸出我看到像
output: a
線
這是否應該發生?有什麼改變cout格式或可能是一些奇怪的東西?
在輸出之前是否有人cout << std::hex
?它會導致它以十六進制打印。
我感覺有人應該使用'printf'而不是'std :: hex' ... –
我認爲這可能是(upvoted),但它是一個足夠大的代碼庫,我無法立即找到它。我意識到這可能是剛剛提交後的情況... – invisiblerhino
檢查並看看std::hex
是否被傳遞到std :: cout的任何地方。這會導致你看到的行爲。
您可以強制使用的東西要在十進制:
std::cout << "output: " << std::dec << i << std::endl;
你可能沒有std::cout << std::hex
地方更早。您可以使用std::cout << std::dec
撤銷此操作。
std::cout << "output: " << std::dec << i << std::endl;
「導致整數變成十六進制數」是一個短語來思考......那些可憐的整數。 –
正如下面的答案所指出的,前面的'std :: hex'導致了這個問題。看到此前的討論:http://stackoverflow.com/questions/1532640/which-iomanip-manipulators-are-sticky – Gnawme