最近,我在Visual 2008中遇到了一个bug (至少我认为它是一个bug)。
当我尝试用两个问号和另一个字符创建string-literals时,会发生一些奇怪的事情:这三个字符被另一个字符替换。
示例:
printf("??-"); --> ~ (hyphen)
printf("??'"); --> ^ (circumflex)
printf("??="); --> # (hash)
printf("??)"); --> ] (square braket)
printf("??("); --> [ (square braket)
printf("??/"); --> \ (backslash)
printf("??!"); --> | (pipe)
printf("??%"); --> ?? (percent sign disappears)有人知道更换的原因吗?
发布于 2016-02-19 10:42:02
这不是虫子,更像是历史的遗留物。它们是C三角图- https://msdn.microsoft.com/en-us/library/bt0y4awe.aspx
Di/Tri-图是一种表示语言开发时不容易获得的字符的方法。它们允许您在源代码中输入符号,这些符号可能没有键盘键来表示。
Tri-graph Symbol
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~%问题只是printf中通常的一个问题,如果您希望看到它,您需要用%来转义%。这是因为%通常是格式说明符的开始。
https://stackoverflow.com/questions/35503196
复制相似问题