C语言有关转义字符 \ 的问题(附ASCII表)
源代码:
#include<stdio.h>int main(void){char ch;ch = '\362';printf("%c\n",ch);printf("\n%s","aaaaa\"bbbbb");printf("\n%s","aaaaa'bbbbb");printf("\n%s","aaaaa\'bbbbb");return 0;}
运行结果:
≥aaaaa"bbbbbaaaaa'bbbbbaaaaa'bbbbb
问题:
char'\362'
为什么输出的结果是≥
呢?是因为362是大于等于号对应的字符吗?源代码的第6行、第8行的结果里面为什么没有那个斜杠
'\362'
指的是以8进制表示的362对应的那个字符(8进制362换算成10进制就是242,对应的就是ASCII
表中10进制为242的那个字符,通过查阅ASCII
表可知242号字符为 ò (带重音符的小写字母o)至于为何会输出
≥
符号,猜测可能是使用了非ASCII
的其他字符编码方式.
\
呢?
C
语言中,"\'"
就是一个内容为单引号的字符串,等价于"'"
;同样的,
"\""
就是一个内容为双引号的字符串,但它并不等价于"""
.因为会造成歧义,计算机无法正确匹配是哪两个"
为一对.测试代码如下:
#include<stdio.h>int main(void){char ch;ch = '\362';printf("%c\n",ch);printf("\n%s","aaaaa"bbbbb");return 0;}
错误信息:
ascii.c:6:27: warning: missing terminating '"' character [-Winvalid-pp-token]printf("\n%s","aaaaa"bbbbb");^1 warning and 1 error generated.
即:
ascii.c:6:27: 警告: 缺少终止 '"' 字符 [-Winvalid-pp-token]printf("\n%s","aaaaa"bbbbb");^生成了 1 个警告和 1 个错误。
所以在这种情况下我们会使用转义字符\
来帮助计算机完成匹配.