奇怪的内存覆盖问题导致整数变为十六进制数

时间:2011-10-31 17:14:45

标签: c++ memory-management hex

我正在调试某人的代码,我有像

这样的代码
int i = their_val;
std::cout << "output: " << i << std::endl;

当我查看日志输出时,我会看到像

这样的行
output: a

这应该发生吗?是改变cout格式的东西还是更奇怪的东西?

3 个答案:

答案 0 :(得分:3)

在输出之前有人cout << std::hex了吗?它会导致它以十六进制打印。

答案 1 :(得分:3)

检查并查看std::hex是否在任何地方传递到std :: cout。这会导致你看到的行为。

您可以使用以下方法强制使用小数:

std::cout << "output: " << std::dec << i << std::endl;

答案 2 :(得分:0)

你可能早些时候曾在某个地方做过std::cout << std::hex。您可以使用std::cout << std::dec撤消此操作。

std::cout << "output: " << std::dec << i << std::endl;