【问题标题】:Why putchar('\\\'); won't work [closed]为什么 putchar('\\\');不会工作[关闭]
【发布时间】:2014-11-12 13:30:02
【问题描述】:

我想得到输出\\,所以我把这个输入到我的代码putchar('\\\'); 但它不起作用,我收到以下错误

D:\c++ work\change\change.cpp(17):错误 C2001:常量换行
D:\c++ work\change\change.cpp(17) : 致命错误 C1057: 宏扩展中文件意外结束

为什么?

【问题讨论】:

  • 呃。请格式化您的代码。
  • 您是在询问 2 个转义序列和一个未终止的多字符常量,还是一个普通字符常量中的单个转义序列?
  • 你必须转义两个反斜杠。 `\\\\`

标签: c++


【解决方案1】:

\\ 是一个转义的 \,那么你有 \' 这是一个转义的 '。我猜你打算写:putchar('\\');putchar('\\\\');(后者不正确,你应该执行前者两次或使用其他函数)

正如您现在所拥有的 (\\\),您正在转义最后一个 ' ,这会导致您的编译器“误解”您的代码。 (我把误解放在引号中,因为它实际上是正确解释它,只是不是很明显)。

tl;博士

putchar('\\');
putchar('\\');

puts("\\\\");

将为您提供正确的输出。 (See live example)

【讨论】:

  • @Deduplicator 是的,我应该清除它
  • @Deduplicator '\\\\' 实际上是implementation-defined
  • @YuHao:你的意思是`\\\`的值。是的。但它与字符常量不同......(理论上可以,再次是的)
  • @Deduplicator 我的意思是,这不是未定义的行为,只是实现定义的。
猜你喜欢
  • 2012-11-09
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2013-02-17
  • 1970-01-01
相关资源
最近更新 更多