前言
整理总结自己所学知识,如有错误,欢迎指正。
一、算术操作符
在写代码时,一定会涉及到计算。
算数操作符:+ - * / %,这些操作符都叫双目操作符。
操作符也叫运算符。
(1)+和-
+和-用来完成加法和减法。
+和-都有两个操作数,位于操作符两端就是它们的操作数,这种操作符也叫双目操作符。
(2)*
运算符*用来完成乘法。
(3)/
运算符/用来完成除法。
从上面举的这两个例子就可以深刻理解:
除号的两端如果是整数,执行的就是整数除法,得到的结果也是整数,结果是整除之后的商。
如果希望得到浮点数的结果,两个运算数中至少有一个浮点数,这时C语言就会进行浮点数除法。
(4)%
运算符%表示求模运算,即两个整数相除的余数,只适用于整数,不适用于浮点数。
负数求模规则:结果的正负号由第一个运算数的正负号决定。
二、赋值操作符
赋值操作符:=和复合赋值
(1)连续赋值
int a=3;
int b=5;
int c=0;
c=b=a+3;
连续赋值的话,是从左到右依次赋值的。
这样写出的代码不容易理解,更建议大家拆开来写。
(2)复合赋值符
对一个数进行自增自减的操作的操作如下:
int a=10;
a=a+3;
我们又提供了更加简便的写法:
int a=10;
a+=3;
C语言提供的复合赋值符如下
三、单目操作符
单目操作符:++ -- +(正)-(负)
(1)++和--
++是一种自增的操作符,分为前置++和后置++。
--是一种自减的操作符,分为前置--和后置--。
1.前置++
计算口诀:先+1,后使用。
a原来是10,先+1,后来a变成了11,再使用就是赋值给b,b得到的也是11,所以a和b的值都是11。
2.后置++
计算口诀:先使用,后+1。
a原来是10,先使用, 赋值给b,b就得到了10,然后再+1,a就变成了11,直接结束后a是11,b是10。
3.前置--
计算口诀:先-1,后使用。
4.后置--
计算口诀:先使用,后-1。
(2)+和-
单目操作符:+和-。
+是正号,-是负号。
运算符+对正负值没有影响,可完全省略,写也不报错。
运算符-改变值的正负号。
四、强制类型转换
int a=3.14;
这个代码在运行时,会出现警告,为了消除警告,我们就会用到强制类型转换。
int a=(int)3.14;
五、scanf和printf介绍
(1)printf
1.基本用法
printf()的作用是将参数文本输出到屏幕。
printf()是在标准库的头文件stdio.h定义的,使用这个函数前,必须引入这个头文件。
2.占位符
printf()可以在输出文本中指定占位符。
占位符:这个位置可以用其他值代入。
输出文本:there are %d apples
占位符:%d,这个值要用其他值来替换。
占位符的第一个字符一律为百分号%。
第二个字符是占位符的类型。
%d表示这里代入的值必须是一个整数。
%s表示代入的是一个字符串。
输出文本可有多个占位符。
printf()参数与占位符是一一对应的关系,有n个占位符,printf()参数就有n+1个。参数个数少于对应的占位符,printf()参数会输出内存中的任意值。
3.占位符列举
常用的占位符如下:
%c:字符
%d:十进制整数
%f:小数(float类型)
%lf:小数(double类型)
%s:字符串
4.输出格式
printf()可以定制占位符的输出格式。
4.1限定宽度
printf()允许限定占位符的最小宽度
%5d:占位符的宽度至少为5位,若不满,则会在对应的值前加空格。
默认输出的值是右对齐,即输出的内容前有空格;
若希望改成左对齐,在输出内容后面添加空格,也可以在%后面插入一个-号。
对于小数,这个限定符会限制所有数字的最小显示宽度。
%f默认小数点后打印6位,小数点也算一位。
4.2总显示正负号
默认情况下,printf()不对整数显示+号,只对负数显示-号,若想要正数也输出+号,可以在占位符%后面加一个+。
4.3限定小数位数
若希望小数点后面只保留两位,占位符可以写成.2f。
上面的例子我们可以看出,不仅保留了两位小数,而且还能四舍五进。
这种写法也可以与限定宽度占位符结合使用。
%6.2f:输出字符串最小宽度是6,小数位数是2,所以输出时字符串的头部有两个空格。
4.4输出部分字符串
%s输出字符串,默认是全部输出。
若只想输出开头部分,可用%.[m]s指定输出长度。
[m]:代表一个数字,表示所要输出的长度。
(2)scanf
给变量输入值就可以使用scanf函数。
1.基本用法
scanf()函数用于读取用户的键盘输入。
程序运行到这个语句时,就会停下来,等待用户从键盘输入。
用户输入数据,按下回车后,scanf()就会处理用户的输入,将其存入变量。
定义在头文件stdio.h
scanf("%d",&i);
&i:输入的整数存入变量i。
变量前必须加上&运算符(指针变量除外)。
scanf()传递的是地址,不是值。
2.一次性输入多个变量
scanf()处理数值占位符时,会自动过滤空白字符,包括空格,制表符,换行符等。
用户输入数据时,有一个或多个空格都不影响scanf()解读数据,用回车键将输入分成几行,也不影响解读。
3.scanf返回值
scanf()返回值是一个整数,表成功读取的变量个数。
若没有读取任何项,或匹配失败,则返回0。
若在成功读取任何数据前,发生读取错误或读取到文件结尾,则返回常量EOF(本质是-1)。
Ctrl+z能提前结束。
4.占位符
%c,%d,%f,%lf,%s,%[]
除了%c以外,都会自动忽略起首的空白字符。
若要强制跳过字符前的空白字符,%c前加上一个空格,表示跳过零个或多个空白字符。
%s:当前第一个非空白字符开始读起,直到遇到空白字符(空格、换行符、制表符等)为止。%s无法杜群多个单词,除非多个%s一起使用,scanf()不适合读取可能包含空格的字符串,scanf()遇到%s占位符时,会在后面存储一个空字符\0.