Visual Studio 2008:字符串文字“??-”、“??'”、“??= 损坏
Visual Studio 2008: String Literals "??-", "??'", "??=" corrupt
最近我在 Visual Studio 2008 中遇到了一个错误(至少我认为是一个)。
当我尝试用两个问号后跟另一个字符创建 字符串文字 时,发生了一些奇怪的事情:这三个字符被另一个字符替换。
示例:
printf("??-"); --> ~ (hyphen)
printf("??'"); --> ^ (circumflex)
printf("??="); --> # (hash)
printf("??)"); --> ] (square braket)
printf("??("); --> [ (square braket)
printf("??/"); --> \ (backslash)
printf("??!"); --> | (pipe)
printf("??%"); --> ?? (percent sign disappears)
有人知道更换的原因吗?
这不是错误,更多的是历史遗留问题。它们是 C 三字母组合 - https://msdn.microsoft.com/en-us/library/bt0y4awe.aspx
Di/Tri-graphs 是一种表示字符的方法,在语言开发时这些字符并不容易使用。它们允许您在源代码中输入您可能没有键盘键来表示的符号。
Tri-graph Symbol
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
% 问题只是 printf 中的常见问题,如果您希望看到它,您需要用 % 转义 %。这是因为 % 通常是格式说明符的开头。
最近我在 Visual Studio 2008 中遇到了一个错误(至少我认为是一个)。
当我尝试用两个问号后跟另一个字符创建 字符串文字 时,发生了一些奇怪的事情:这三个字符被另一个字符替换。
示例:
printf("??-"); --> ~ (hyphen)
printf("??'"); --> ^ (circumflex)
printf("??="); --> # (hash)
printf("??)"); --> ] (square braket)
printf("??("); --> [ (square braket)
printf("??/"); --> \ (backslash)
printf("??!"); --> | (pipe)
printf("??%"); --> ?? (percent sign disappears)
有人知道更换的原因吗?
这不是错误,更多的是历史遗留问题。它们是 C 三字母组合 - https://msdn.microsoft.com/en-us/library/bt0y4awe.aspx
Di/Tri-graphs 是一种表示字符的方法,在语言开发时这些字符并不容易使用。它们允许您在源代码中输入您可能没有键盘键来表示的符号。
Tri-graph Symbol
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
% 问题只是 printf 中的常见问题,如果您希望看到它,您需要用 % 转义 %。这是因为 % 通常是格式说明符的开头。