You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C++中使用/n时输出异常:为何打印出12142?

问题解答

核心原因:误用了C++的多字符字面量

你写的'/n'是多字符字面量,这是C++里的特殊语法:当用单引号包裹多个字符时,编译器会将其视为一个int类型的值,具体数值由编译器实现定义。

在Visual Studio 2021中,多字符字面量的计算规则是将每个字符的ASCII值按小端字节序拼接:

  • '/'的ASCII值是47(十六进制0x2F)
  • 'n'的ASCII值是110(十六进制0x6E)
    拼接后得到十六进制0x6E2F,转换成十进制就是12142——这正是你看到的输出结果。

对应预期需求的正确写法

根据你的不同预期,正确代码如下:

  • 若想输出字符串/n:用双引号包裹字符串
    cout << "/n";
    
  • 若想输出单个字符/或换行符:单引号包裹单个字符(注意换行符是反斜杠\n,不是正斜杠/n)
    cout << '/'; // 输出 '/'
    cout << '\n'; // 输出换行
    
  • 若想输出两个字符的ASCII值(47和110):分开输出每个字符的ASCII值
    cout << (int)'/' << (int)'n'; // 输出 47110
    

补充说明

多字符字面量属于C++的“实现定义行为”,不同编译器(如GCC、Clang)可能有不同计算逻辑,因此这种写法不推荐日常使用。编码时应遵循:单引号仅用于包裹单个字符,字符串用双引号包裹,避免语法混淆。

内容的提问来源于stack exchange,提问作者nnutural

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:34:54