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 中常见的问题,如果您希望看到它,您需要用 % 转义 %。这是因为 % 通常是格式说明符的开头。
相关文章:
- 删除字符串后C++检测到堆损坏
- 检测到堆损坏(字符串导致堆损坏)|C++
- 我的 c 字符串复制函数正在损坏其他变量的堆栈
- 字符串标记化期间的内存损坏
- 放置在外部 DLL 中的类中的字符串数据的内存损坏
- 标准::字符串中的堆损坏
- C#到C代码P/调用多个std:字符串声明导致堆栈损坏
- 为了验证std::字符串是否已损坏,您将执行哪些调试验证
- 使用时间函数后,字符串已损坏
- 字符指针指向字符串,然后指向字符串数组。"./a.out"中的错误:malloc():内存损坏:0x0900c3b0***
- C++ - 删除标准::字符串*;堆损坏
- CPUID品牌字符串损坏
- 第二个字符串在多次重新分配调用后损坏
- Visual Studio 2008:字符串文字"??-"、"??'"、"??="损坏
- C++ iostream 使用字符串流的损坏
- 烟囱损坏;使用字符串进行位操作;MSVC++
- 从文件读取时字符串已损坏
- 按字符串堆损坏
- c# COM字符串在c++ BSTR中被损坏
- 变量损坏c++字符串Visual Studio 2005