前言
一、转义字符
转义字符(Escape character):意为转变了原来意思的字符
这里是引用
原图链接
常用的有:\’ \" \ \n \r \t \ddd \xdd
\’
#include <stdio.h>
int main()
{
printf("%c",''');
return 0;
}
这样打印单引号时会造成编译器无法编译
printf("%c",'\'');
这样写才对
因为转义字符属于一个字符所以用 ’ '和%c(打印字符)
注:%d----打印整型
%c—打印字符
%s—打印字符串
%f—打印float类型的数据(小数)
%lf—打印double类型的数据
\"
与 \` 用法相同,这里就不再赘述了
\\
你打印一个文件路径时,如果直接这样写:
int main()
{
printf("c:\test\test.c");
return 0;
}
但结果是这样:
因为 \t 表示水平制表符
正确的写法是在 \ 的前面加 \ 进行转义, 防止被解析为 \t
\ddd
ddd表示1-3个八进制的数字。将ddd三个数字转换成十进制,十进制数对应的ASCAII就是结果。
注:换算数字不能超过127,因为ASCAII表最大为127
换算方法 整数:156 = 1×8^2 + 5×8^1 + 6×8^0
例如:
#include <stdio.h>
int main()
{
printf("%c", '\130');
return 0;
}
注:\130也为字符不是字符串
输出
转换:
这里是引用
为什么会是X?
因为输出结果为字符型,将八进制数字130转换为十进制为88,然后输出在ASCII表中对应的字符X。如果输出类型为整型,打印的结果就是八进制130转换为十进制的结果
这里是引用
其实 \ddd 最多只支持三位数字,并且三位数字也不是任意的(每个数字不能大于8,一旦大于8它就不是八进制数了),一旦大于等于八进制数 '/400 '(十进制256=8进制400)就超过了ascall码的范围,编译器就会报错。另外大于三位,或者遇到非八进制数字时则转换结束,直接取末尾数字。
原文链接:https://blog.csdn.net/qq_45559559/article/details/126132152
\xdd
dd表示2个十六进制数
int main()
{
printf("%c", '\x30');
return 0;
}
换算如下:
习题
1.下面的代码打印的数字是多少?
#include <stdio.h>
#include <string.h>
int main()
{
printf("%d\n", strlen("asdf g"));
return 0;
}
答案为:6
- 首先,strlen求得是字符串长度
- 其次,空格也是一个字符
- 然后,字符串末尾的\0不算是字符
2.下面的代码打印的数字是多少
#include <stdio.h>
#include <string.h>
int main()
{
printf("%d", strlen("c:\test\628\test.c"));
return 0;
}
答案为:14
因为这个字符串中有转义字符存在。
红色方框里的部分都会被转义成一个字符
这里是引用