目录
1 逻辑运算
- 逻辑运算是对逻辑量进行的运算,结果只有0或1
- 逻辑量是关系运算或逻辑运算的结果
运算符 描述 示例 结果 ! 逻辑非 !a 如果a是true结果就是false,
如果a是false结果就是true
&& 逻辑与 a&&b 如果a和b都是true,结果就是true,
否则就是false
|| 逻辑或 a||b 如果a和b有一个是true,结果为true,
两个都是false,结果为false
- 如果想要表达数学中的区间,如:x∈(4,6),应该如何写c的表达式
- 像4<x<6这样的式子,不是正确计算的式子,因为4<x的结果是一个逻辑值(0或1),那么再进行判断一定<6,从而导致结果永远是1
- 所以正确的表示方法应该是x>4&&x<6
- 如何判断一个字符c是否是大写字母?
-
c>='A'&&c<='Z'
(1)逻辑运算符的优先级
- !>&&>||
- !done&&(count>MAX)
(2)短路
- 逻辑运算是自左向右进行的,如果左边的结果已经能够解决结果了,就不会做右边的计算
- a==6&&b==1
- a==6&&b+=1
- 对于&&,左边是false时就不做右边了
- 对于||,左边是true时就不做右边了
- 不要把赋值,包括复合赋值组合进表达式
2 运算符优先级整理
优先级 | 运算符 | 结合性 |
---|---|---|
1 | () | 从左到右 |
2 | !+ - ++ -- | 从右到左 |
3 | * / % | 从左到右 |
4 | + - | 从左到右 |
5 | < <= > >== | 从左到右 |
6 | == != | 从左到右 |
7 | && | 从左到右 |
8 | || | 从左到右 |
9 | = += -== *= /= %= | 从右到左 |
3 条件运算
(1)条件运算符
- count=(count>20)?count-10:count+10;
- 条件、条件满足时的值和条件不满足时的值
- 用if else语句来表达即为
if(count>20) count=count-10; else count=count+10;
1)条件运算符优先级
- 条件运算符的优先级高于赋值运算符,但是低于其他运算符
(2)逗号运算
1)逗号运算符
- 逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。并以其右边的表达式的值作为它的结果。逗号的优先级是所有的运算符中最低的,所以它两边的表达式会先计算;逗号的组合关系是自左向右,所以左边的表达式会先计算,而右边的表达式的值就留下来作为逗号运算的结果。
2)逗号在for中的运用
- for(i=0,j=10;i<j;i++,j--)……(使进行多个运算)
4 函数
(1)什么是函数
- 函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或一个值
- 可以先想象成数学中的函数
(2)函数定义
void为返回类型 sum为函数名 (int begin,int end)为参数表
void sum (int begin,int end) //函数头
{
int i;
int sum=0;
for (i=begin;i<=end;i++){
sum+=i;
}
printf("%d到%d的和是%d\n",begin,end,sum); //函数体
}
(3) 调用函数
- 函数名(参数值);
- ()起到了表示函数调用的重要作用
- 即使没有参数也需要()
- 如果有参数,则需要给出正确的数量和顺序
- 这些值会被按照顺序依次用来初始化函数中的参数
(4)函数返回
- 函数知道每一次是哪里调用它,会返回到正确的地方
1)从函数中返回
- return停止函数的执行,并送回一个值
- return;
- return表达式
2)没有返回值的函数
- void 函数名(参数表)
- 不能使用带值的return
- 可以没有return
- 调用的时候不能做返回值的赋值
(5)函数原型
- 函数头,以分号“;”结尾,就构成了函数的原型
- 函数的原型目的是告诉编译器这个函数长什么样
- 名称
- 参数(数量及类型)
- 返回类型
- 现在一般写在调用它的函数前面
1)函数先后关系
- 先打出函数再进行函数的利用
(6)参数传递
C语言在调用函数时,永远只能传值给函数
1)传值
- 每一个函数有自己的变量空间,参数也位于这个独立空间中,和其他函数没有关系
- 对于函数参数表中的参数,叫做“形式参数”,调用函数时给的值,叫做“实际参数”
(7)本地变量
- 函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量
- 定义在函数内部的变量就是本地变量
- 参数也是本地变量
- 本地变量是是定义在块内的
- 它可以是定义在函数的块内
- 也可以定义在语句的块内
- 甚至可以随变拉一队大括号来定义变量
- 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
- 块外面定义的变量在里面仍然有效
- 块里面定义了和外面同名的变量则覆盖了外面
(8)变量的生存期和作用域
- 生存期:什么时候这个变量开始出现了,到什么时候它消亡了
- 作用域:在什么范围内可以访问这个变量(这个变量可以起作用)
- 对于本地变量,这两个问题的答案是统一的:大括号内