【发布时间】:2018-04-06 11:50:43
【问题描述】:
其实在Visual 2013下编译C++,std::hex(粘性操作符)的行为并不是我所期望的:
我正在尝试将 char 打印为其十六进制值,但我不得不掩盖或强制转换我的值以获得所需的行为。
所以我的问题不是怎么做,而是为什么。
char valueInChar = 0xc8; //decimal 200
std::cout << std::hex << valueInChar; //prints out ╚
std::cout << std::hex << (valueInChar & 0xFF); //prints out c8
std::cout << std::hex << int(valueInChar); //also prints out c8
这是 std 的可视化实现中的错误吗?我对std::ios::hex 感到困惑吗?
【问题讨论】:
-
经过一番研究,我没有看到这个答案。我用
std::hex搜索。 -
据我所知,通过查看问题和副本中的答案:这是关于
std::hex的使用。即使不是:核心问题本质上是相同的:“我如何将char打印为十六进制?” -
我同意,但 Matteo 的回应更好地解决了我的审问,这更像是“为什么”而不是“我该怎么做……”。
-
复制是不好的问题吗?否决是针对不好的问题或重复的问题?
-
技术上?依靠。用鼠标将鼠标悬停在否决按钮上,你看到了什么? “这个问题没有显示任何研究努力;它不清楚或没有用。”有人可能会争辩说,如果存在重复项(特别是,如果可以很容易地找到它,并且使用与问题中存在的几乎相同的术语) - 提问者没有做足够的研究,这可能成为重复的原因.但是,如果您在问题本身中承认您的问题与问题 X 相似,然后继续解释为什么它与它不同:这是一种不同的情况。