目录
- 10.转义字符
- 1.学习\\? → 在书写连续多个问号时使用,防止他们被解析成三字母词
- 2.学习 \\' → 输出单个和多个单引号 '
- 2.1输出单个单引号
- 2.2输出多个单引号
- 3.学习 \\" → 输出单个和多个双引号 "
- 3.1输出单个双引号
- 3.2输出多个双引号
- 4.学习\\\ → 表示一个反斜杠,防止它被解释为一个转义序列符
- 5.学习 \a → 终端报警
- 6. 学习 \b → 退格键:光标回退一个字符,但不删除字符
- 7. \f、\n和\v了解即可
- 8.学习 \r → 回车符,光标移到同一行的开头
- 9.学习 \t → 制表符
- 10.学习\ddd(字符的8进制)和\xdd(字符的16进制),两种特殊的转义字符
- 10.1 \ddd
- 10.2 \xdd
- 11.小题目:算一下字符串的长度
- 11.1计算len1和len2字符串长度
- 11.2若将上题中 c:\test\198\abc\test.c 中 1 换为 0,结果还一样吗?
- 12.语句和语句分类(了解,后面学习)
- 12.1空语句:一个 ; 就是一个语句
- 12.2表达式语句: 在表达式后面加上封号
- 12.3函数调用语句
- 12.4复合语句:即代码块,成对括号中的代码就构成一个代码块
- 12.5控制语句:控制程序的执行流程,以实现程序的各种结构方式
- 13.注释
- 13.1 // 单行注释
- 13.2 /**/ 可以一行注释也可以多行注释,可以在代码里注释,不支持嵌套注释
- 13.3注释快捷键
不知道为什么目录中1-4这些会多一个 \ ,以正文为准
10.转义字符
C语言中像这样的转义字符还有⼀些,具体如下:
• \? :在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证。
• \’ :用于表示字符常量。
• \" :用于表示⼀个字符串内部的双引号。
• \\ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换页符,光标移到下⼀页。在现代系统上,这已经反映不出来了,行为改成类似于 \v 。(了解)
• \n :换行符。(已学过)
• \r :回车符,光标移到同⼀行的开头。
• \t :制表符,光标移到下⼀个水平制表位,通常是下⼀个4/8的倍数。
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。(了解)
下面2种转义字符可以理解为:字符的8进制或者16进制表示形式
• \ddd :d d d表示1~3个⼋进制的数字。 如: \130 表示字符X
• \xdd :d d表示2个十六进制数字。 如: \x30 表示字符0
• \0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其
ASCII码值是0.
1.学习\? → 在书写连续多个问号时使用,防止他们被解析成三字母词
\? :在书写连续多个问号时使用,防止他们被解析成三字母词。
当我们写出以下代码时
printf("(Are you ok ??)");有些编译器会将 ??) 解析成三字母词,本来我们要的是(Are you ok ??)
解析成三字母词后
??) 会变成 ]
??( 会变成 [
所以我们在 ?? 前面加上 \ ,这样无论在那个编译器都会是正常的,而不会被解析成三字母词
printf("(Are you ok \?\?)");2.学习 \’ → 输出单个和多个单引号 ’
\’ :用于表示字符常量。
2.1输出单个单引号
\’ :用于表示字符常量’
我们知道,输出字符时可以用单引号,比如输出字符A可以这样
printf("%c",'A');那我们输出单个单引号能不能写成(“%c\n”, ‘’')这样呢?答案是不可以的。
printf("%c",''');计算机会认为是多了一个单引号,而不是两个单引号括起来一个单引号,所以要输出单引号需要加转义字符
printf("%c",'\'');//作为字符输出除此之外,我们可以作为字符串输出 ’
printf("'");//作为字符串输出2.2输出多个单引号
printf("%s","''''");//%c是打印单个字符,%s是打印字符串printf("'''");全部代码:
#include<stdio.h>intmain(){//1.1输出单个单引号(代码中\n为换行符,可删去)printf("%c\n",'\'');//打印单个单引号方法1:作为字符输出printf("'\n");//打印单个单引号方法2:作为字符串输出/* 输出单个单引号不能写成("%c\n", ''') 计算机会认为'''是多了一个单引号,而不是两个单引号括起来一个单引号 *///1.2输出多个单引号printf("%s\n","''''");printf("'''\n");return0;}3.学习 \" → 输出单个和多个双引号 "
\" :用于表示⼀个字符串内部的双引号。
先输出两个字符串
#include<stdio.h>intmain(){printf("%s\n","abcdef");printf("%s\n","x");return0;}3.1输出单个双引号
printf("%s","\"");//作为字符输出printf("\"");//作为字符串输出//输出单个双引号不能写成("%s\n", """),要输出单个双引号需要加转义字符3.2输出多个双引号
打印 3 个双引号
printf("\"\"\"");//打印多个双引号必须都转义为 \"(如 printf("\"\"\""); )4.学习\\ → 表示一个反斜杠,防止它被解释为一个转义序列符
\\ :用于表示⼀个反斜杠,防止它被解释为⼀个转义序列符。
在下面的代码中,写了一串C盘路径代码
printf("c:\test\test.c\n");在此代码中,因为有 \ 的原因,导致 \t 含义发生了变化,变成了制表符(相当于tab键),所以输出也发生了变化
两个e前面有好几个空,\t = tab键,是制表符,所以输出这句话会有空格,可以加 \ 转义 \test。
printf("c:\\test\\test.c\n");//输出完整路径
这样便可以完整输出路径了
5.学习 \a → 终端报警
\a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
输出下面的代码,终端发出警报声(调大声音)
#include<stdio.h>intmain(){printf("\a");return0;}6. 学习 \b → 退格键:光标回退一个字符,但不删除字符
\b :退格键,光标回退⼀个字符,但不删除字符。
本来光标在最后面,加入 \b 后,光标回退一个字符,
#include<stdio.h>intmain(){printf("xxxx\b");getchar();//getchar是函数,在键盘上读取字符。//若没有此函数,代码会直接结束运行,代码结束,无法看见光标,此函数可以阻止函数代码结束。return0;}
加入两个 \b 光标便回退两个字符。
printf("xxxx\b\b");
如果在 printf(“xxxx\b\b”); 的 \b 后面加上y,则会将第三个x变成y,光标跳到改变的字符后面
printf("xxxx\b\by");7. \f、\n和\v了解即可
8.学习 \r → 回车符,光标移到同一行的开头
\b :退格键,光标回退⼀个字符,但不删除字符。
在abc后面加 \r ,打印的时候光标移到同一行的开头
#include<stdio.h>intmain(){printf("abc\r");//光标移到同一行的开头getchar();return0;}
若在 abcdefgh 中,在abc后面加入 \r ,defgh会替换前面的abc
printf("abc\rdefgh");//defgh会替换前面的abc
若在abcdefgh中,在abcde后面加 \r ,fjh会替换前面的abc,保留de
printf("abcde\rfgh");//fgh替换abc9.学习 \t → 制表符
\t :制表符,光标移到下⼀个水平制表位,通常是下⼀个4/8的倍数。
#include<stdio.h>intmain(){printf("a\tbc\tdef\tqqqq\twwwww\tx");return0;}
两个水平制表符间的宽度一般是4或8的倍数,\t 的意思是 算上a 到 bc 的距离一共是8个字符。
a + 7 bc +6 def +5 qqqq +4 wwwww +3 x
10.学习\ddd(字符的8进制)和\xdd(字符的16进制),两种特殊的转义字符
10.1 \ddd
\ddd:ddd表示1 - 3个八进制的数字,如:\130表示字符x \后面跟的八进制的数字由0 - 7组成
以 \130 为例:
intmain(){printf("%c\n",'\130');return0;}
输出为X,因为八进制的130转换为十进制是88,对照ASCII表,88的ASCII码值(char)为X
10.2 \xdd
\xdd:dd表示1 - 2个十六进制的数字, 如:\x30表示字符0
以 \x33 为例:
#include<stdio.h>intmain(){printf("%c\n",'\x33');return0;}输出为3,因为十六进制的33转为十进制是51,对照ASCII表,51的ASCII码值(char)为3
注:
①转换的十进制数字不能超过127,ASCII编码表范围是0-127
② \0 → 就是 \ddd 的形式,用来表示字符串的结束,ASCII码值=0
11.小题目:算一下字符串的长度
11.1计算len1和len2字符串长度
#include<stdio.h>#include<string.h>intmain(){intlen1=strlen("abcdef");intlen2=strlen("c:\test\198\abc\test.c");printf("%d\n",len1);printf("%d\n",len2);return0;}解析:
#include<stdio.h>#include<string.h>intmain(){intlen1=strlen("abcdef");//输出为6//strlen函数 - string length - 用来统计字符串的长度//(调用此函数要头文件#include <string.h>)//字符串末尾有\0,但是\0是字符串结束标志,不是内容,统计长度不算\0intlen2=strlen("c:\test\198\abc\test.c");//输出为18,\后面跟的八进制的数字:0-7组成,没有9、8;//拆分为18个:c : \t e s t \1 9 8 \a b c \t e s t . cprintf("%d\n",len1);printf("%d\n",len2);return0;}11.2若将上题中 c:\test\198\abc\test.c 中 1 换为 0,结果还一样吗?
#include<stdio.h>#include<string.h>intmain(){intlen2=strlen("c:\test\098\abc\test.c");printf("%d\n",len2);return0;}
输出为6,\0 表示字符串结束。
12.语句和语句分类(了解,后面学习)
12.1空语句:一个 ; 就是一个语句
#include<stdio.h>intmain(){;//空语句return0;}12.2表达式语句: 在表达式后面加上封号
#include<stdio.h>intmain(){inta=20;intb=0;b=a+5;//表达式语句return0;}12.3函数调用语句
#include<stdio.h>intmain(){printf("hehe\n");//函数调用语句return0;}12.4复合语句:即代码块,成对括号中的代码就构成一个代码块
#include<stdio.h>staticvoidprint(intarr[],intsz)//函数{}大括号中的代码也构成复合语句{inti=0;for(i=0;i<sz;i++){printf("%d",arr[i]);}}#include<stdio.h>intmain(){inti=0;intarr[10]={0};for(i=0;i<10;i++)//for循环的循环体的{}大括号中的就是复合语句{arr[i]=10-i;printf("%d\n",arr[i]);return0;}}12.5控制语句:控制程序的执行流程,以实现程序的各种结构方式
C语言支持三种结构:顺序结构、选择结构、循环结构,C语言有9种控制语句
分为以下三类:
1.条件判断语句(也叫分支语句):if语句、switch语句
2.循环执行语句:do while语句、while语句、for语句
3.转向语句:break语句、goto语句、continue语句、return语句
13.注释
对编译器没用,是给程序员看的,更好地理解代码,不要写没必要的注释
注释的两种形式:
13.1 // 单行注释
printf("hehe\n");//打印输出hehe13.2 /**/ 可以一行注释也可以多行注释,可以在代码里注释,不支持嵌套注释
1.多行注释
/*
多
行
注
释
/
2.嵌套注释
代码是用 // 注释的,里面就不能再用 // 注释
但是/*/里面可以嵌套//
13.3注释快捷键
VS2022工具栏有添加注释和取消注释的按钮
注释快捷键:
Ctrl+/
添加注释:Ctrl+k+c
取消注释:Ctrl+k+u
(若注释失效,可能是编译器设置问题)
注:编译器编译时,注释会被替换成一个空格