目录
1、转义字符
printf("angu\0yxs");//转义字符是字符结束标志
\? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。
• \' :⽤于表⽰字符常量'
• \" :⽤于表⽰⼀个字符串内部的双引号
• \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换⻚符,光标移到下⼀⻚。类似于\v• \n :换⾏符。
• \r :回⻋符,光标移到同⼀⾏的开头。
• \t :制表符,光标移到下⼀个⽔平制表位,8位是包含前边隔开的几位如:abc\t那就是8-3=5位
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。• \ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X
• \xdd :d d表⽰2个⼗六进制数字。 如: \x30 表⽰字符0
注意:二进制/八进制/十六进制转变为十进制或者互转
2、C语言语句分类
空语句
“;”就是一个空语句
表达式语句
eg:3+5;就是一个表达式语句
函数调用语句
为了让算法的复写性更高,函数调用很有必要
复合语句:代码块
控制语句
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分⽀语句:if语句、switch语句;
2. 循环执⾏语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句。
虽然大概只有九种但是十分重要基本上要写的代码里边都要用到。
具体如何来写:(写完这一篇会在这里加个链接)
关于注释
有/* */多行注释和//单行注释两种,注释在编译时会被编译成为一个空格
注释快捷键:ctrl+k+c
取消注释快捷键:ctrl+k+u
3、打印类型
三字母词
* ??)—— ]
* ??(—— [%d——打印整型
%c——打印字符
%s——打印字符串
%f——打印float类型的数据
%lf——打印double类型的数据
%zu——打印sizeof的返回值
4、 数据类型介绍
数据类型、大小、以及计算单位
整型,字符型,浮点型
布尔型
必须包含指定头文件、返回结果是false/true
小写bool与大_写BOOL
数据类型的长度
sizeof() 用以计算长度,单位是字节sizeof()种的表达式不计算
sizeof(long)>=sizeof(int)后者是4、前者可能4/8取决于编译器不同
关于sizeof的%d和%zd,如上图中的波浪线想去掉、用%zd即可。
每个类型长度可参考数据类型介绍图。
sizeof 运算符的返回值,C语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给 系统⾃⼰去决定, sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是 unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long , 对应的 printf() 占位符分别是 %u 、 %lu 和 %llu 。这样不利于程序的可移植性。
C语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返 回值类型。对应当前系统的 sizeof 的返回值类型%zd,可能是 unsigned int ,也可能是 unsigned long long 。
5、signed 和 unsigned
signed 和 unsigned 修饰的是字符类型和整型,
signed:表示带正负号、可以标示负数,(即有符号的数等)
unsigned 表示不带正负号、不能表示负数。
int a;是signed的int,unsigned不可省略。
有关于int char的区别注意:
整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。
C语⾔规定 char 类型默认是否带有正负号,由当前系统决定。这就是说, char 不等同于 signed char ,它有可能是 signed char ,也有可能是 unsigned char 。
6. 数据类型的取值范围
limits.h ⽂件中说明了整型类型的取值范围。
float.h 这个头⽂件中说明浮点型类型的取值范围。
7. 变量
C语⾔中把经常变化的值称为变量,不变的值称为常量。
变量在创建的时候就给⼀个初始值,就叫初始化。
eg:int a=10;
变量的分类
• 全局变量:在⼤括号外部定义的变量就是全局变量 全局变量的使⽤范围⼴,整个⼯程中都可使用。
• 局部变量:在⼤括号内部定义的变量就是局部变量 局部变量的使⽤范围是⽐较局限,只能在所在的局部范围内使⽤的。
有关变量的生命周期需要注意一下。
当局部变量和全局变量同名的时候,局部变量优先使⽤。
8. 算术操作符:+、-、*、/、%
C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是: + - * / % ,这些操作符都是双⽬操作符。
+、-、*、/、% 两端都需要有操作数、因此得名。
尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是 1.5 。原因就在于c语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。
如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时c语⾔就会进⾏浮点数除法。
运算符 % 表⽰求模(余)运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点 数。
负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。
用代码大致表示一下
9. 赋值操作符:= 和复合赋值
赋值
在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。
赋值操作符 = 是⼀个随时可以给变量赋值的操作符
连续赋值
赋值操作符也可以连续赋值,
c = b = a+3;//连续赋值,从右向左依次赋值的。
建议还是拆开来写,这样⽅便观察代码的 执⾏细节。
复合赋值:
10. 单⽬操作符:++、--、+、-
++a是先+1,后使⽤;
a++是先使用,再+1;
--a是先-1,后使⽤;
a--是先使用,再-1;
11. 强制类型转换
在操作符中还有⼀种特殊的操作符是强制类型转换,语法形式很简单
int a = (int)3.14;//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分
12. scanf和printf介绍
printf
printf() 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以 定制输出⽂本的格式。
占位符
“占位符”,就是这个位置可以⽤其他值代⼊。
占位符的第⼀个字符⼀律为百分号 % ,第⼆个字符表⽰占位符的类型
%d——打印整型
%c——打印字符
%s——打印字符串
%f——打印float类型的数据
%lf——打印double类型的数据
%zu——打印sizeof的返回值
%5d 表⽰这个占位符的宽度⾄少为5位。如果不满5位,对应的值的前⾯会添加空格。输出的值默认是右对⻬。如果是%-5d可以直接左对齐。
scanf
scanf() 处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等
变量前⾯必须加上 & 运算符(指针变量除外),因为 scanf() 传递的不是值,⽽是地址, 即将变量 i 的地址指向⽤⼾输⼊的值。
scanf() 处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存 进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条 件的字符为⽌。
-0.45并不能被准确表示。
返回值
scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。
如果没有读取任何项,或者匹配失败,则返回 0 。
如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF (-1)。
报错演示:
scanf在读取数据时候的时候不看到底栈有多大、而是直接存储,可能会越界的情况的存在。
scanf() 常⽤的占位符如下,与 printf() 的占位符基本⼀致。
• %c :字符。
• %d :整数。
• %f : float 类型浮点数。
• %lf : double 类型浮点数。
• %Lf : long double 类型浮点数。
• %s :字符串。
• %[] :在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合的字符,匹配将会停⽌。
上⾯所有占位符之中,除了 %c 以外,都会⾃动忽略起⾸的空⽩字符。 %c 不忽略空⽩字符,总是返 回当前第⼀个字符,⽆论该字符是否为空格。 如果要强制跳过字符前的空⽩字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表示跳过零个或多个空⽩字符。
占位符 %s ,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个⾮空⽩ 字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌。
赋值忽略符
正常情况:
scanf() 提供了⼀个赋值忽略符(assignment suppression character) * 。 只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。