C++ GCC编译时警告:未知转义序列:'\040';

C++ GCC编译时警告:未知转义序列:'\040';,c++,c,gcc,C++,C,Gcc,我是c编程新手。这是我的密码: int main() { char *loc = " E:\ "; return 0; } 程序编译成功,但出现警告 <source>: In function 'int main()': <source>:4:17: warning: unknown escape sequence: '\040' char *loc = " E:\ "; :在函数“int main()”中: :4:17:警告:未知转

我是c编程新手。这是我的密码:

int main() {
    char *loc = " E:\ ";
    return 0;
}    
程序编译成功,但出现警告

<source>: In function 'int main()':
<source>:4:17: warning: unknown escape sequence: '\040'
     char *loc = " E:\ ";
:在函数“int main()”中:
:4:17:警告:未知转义序列:'\040'
char*loc=“E:\”;

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

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

使用\\在字符串中获得一个\您需要转义反斜杠:
char*loc=“E:\\”为什么使用c++11标记?这甚至不编译,而不是使用C++的方式。.dR.pk不是你所要求的输出吗??你应该使用<代码> const char */COD>或使用数组(<代码> char LOC[] /代码>)。因此,我必须分配char *LOC=“E:E.\\\”……???????.dk。你需要写“e:”来打印“E:\\”DR.PK是,对于输出中所需的每个“\”,必须将“\”放入字符串中。C++中存在一组不能直接用于字符串文字的字符。当你想把这样的字符放在你的字符串中时,你需要在它前面加上“\”字符。例如,当你需要双引号时,你可以写“\”,看看这些特殊字符的名称。