【发布时间】:2021-05-12 01:57:34
【问题描述】:
在这段代码中:
int main()
{
char str[]= "geeks\nforgeeks";
char *ptr1, *ptr2;
ptr1 = &str[3];
ptr2 = str + 5;
printf("%c", ++*str - --*ptr1 + *ptr2 + 2);
printf("%s", str);
getchar();
return 0;
}
为什么编译器将 \n 解释为转义序列而不是两个字符,即 \ 和 n?
另一方面,这个程序并没有注释掉你好。
int main()
{
char str[]= "geeks/*hello*/geeks";
printf ("%s",str);
return 0;
}
【问题讨论】:
-
因为
\n被定义为转义序列? -
但那是在字符串里面,编译器怎么知道?
-
作为反论点
-
@programmer \ 与 / 不同。 \ 被特殊对待。
-
在字符串文字中 / 只是一个普通字符,但 \ 是一个转义字符,因此可以写入不可打印的字符,例如换行符、制表符、回车符等。请参阅下面的答案。
标签: c escaping comments string-literals