繁体   English   中英

C中的\\是什么意思

[英]What does \X mean in C

我知道\\ x是ASCII文字的十六进制表示

printf("%c",'\x41'); // A
printf("%c",'\X41'); // 1

为什么?

参考: http//c.comsci.us/etymology/literals.html (见最底层表)

这不是标准,因此结果会有所不同。

鉴于\\X不是有效的控制序列,您的特定编译器正在选择单引号中的最后一个字符并使用它。

所以,如果你这样做: '\\X12345'你可能会得到5 \\X没什么特别的。 如果你从你的躲避字符文字中取出它,你会得到相同的结果。

我请求你使用-Wall选项进行编译。

aaa.c: In function ‘main’:
aaa.c:6:14: warning: unknown escape sequence: '\X' [enabled by default]
aaa.c:6:14: warning: multi-character character constant [-Wmultichar]

从上面的消息X被忽略。

考虑到'41',这是多字符字符常量。

正如@paddy所说,最后一个字符在sinle-quotes中使用。 所以字符'1'被打印出来。

一组逃脱序列

\a alert (bell) character              \\ backslash
\b backspace                           \? question mark
\f formfeed                            \’ single quote
\n newline                             \" double quote
\r carriage return                     \ooo octal number
\t horizontal tab                      \xhh hexadecimal number
\v vertical tab

第一行\\x41是正确的,0x41是'A'的ASCII值,因此打印'A'。

第二行是语法错误,因为\\ X(大写)不是有效的转义序列。 现在发生的事情取决于你的编译器,但是GCC会将\\ X4视为无效并忽略它,将'1'作为要打印的文字字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM