【问题标题】:GCC compiles with warning: unknown escape sequence: '\040' [closed]GCC 编译时出现警告:未知转义序列:'\040' [关闭]
【发布时间】:2017-06-24 19:04:02
【问题描述】:

我是 C 编程新手。这是我的代码:

int main() {
    char *loc = " E:\ ";
    return 0;
}    

程序编译成功并出现警告。

<source>: In function 'int main()':
<source>:4:17: warning: unknown escape sequence: '\040'
     char *loc = " E:\ ";

程序的输出是“E:”,但应该是“E:\”。为什么我在输出中缺少“\”。我的代码有什么问题??

【问题讨论】:

  • 使用 \\ 获取字符串中的单个 \
  • 你需要转义反斜杠:char *loc = " E:\\ ";
  • 为什么是 c++11-tag?这甚至无法编译,并且不是正确使用 C++ 的方式。
  • @Dr.pK 这不正是您要求的输出吗??
  • 你应该使用const char *或使用数组(char loc[])。

标签: c++ c gcc


【解决方案1】:

您需要写E:\\ 而不是E:\。这是因为\ 字符标志着escape sequence 的开始。编写 \\ 本身就是一个转义序列,它只计算 \

【讨论】:

  • 所以,要打印 "E:\\\" ,我必须分配 char *loc = " E:\\\\\\ "....对吗??
  • @Dr.pK 你需要写“E:\\\\\\\\\”来打印“E:\\\”
  • @Dr.pK 是的,对于您想要在输出中的每个“\”,您必须在字符串中输入“\\”。在 C++ 中存在一堆不能直接在字符串文字中使用的字符。当你想把这样的字符放在你的字符串中时,你需要在它前面加上“\”字符。例如。当你想要 ` " ` 双引号时,你写 ` \" ` 查看这些特殊字符的complete list
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 2019-07-30
  • 1970-01-01
相关资源
最近更新 更多