第一节 运算符
一、比较运算符与比较表达式
1. 比较运算符:是用来比较两个数据的大小的。
> >= < <= == !=
2. 比较表达式
由比较运算符连接起来的式子,就叫做比较表达式.
3. 比较表达式的结果的类型
1). 比较表达式实际上描述的是一个条件:这个条件就只有两种结果,要么这个条件成立,要么这个条件不成立。
2). 比较表达式的结果有两个,要么是成立的(真的),要么就是不成立(假的)
做比较的结果只有真或者假
3). 在C语言中,使用1个int类型的 0或者1 来表示1个条件的是否成立 0 代表不成立 也就是说这个比较表达式的描述的条件是假的.
1 代表成立 也就是说这个比较表达式的描述的条件是真的.
因此,比较表达式的结果的类型是int类型的,在使用的时候应该用一个int类型的变量来保存比较表达式的结果。
如果比较表达式描述的条件是真的,则结果为1.
如果比较表达式描述的条件是假的,则结果为0
4. 简单介绍比较运算符
1). 比较运算符的作用:用来判断两个数据之间的大小关系。
> 符号:如果左边的数据大于右边的数据,就表示条件成立,此时表达式的结果就为1,否则就为0。
>=符号:如果左边的数据大于或者等于右边的数据,就表示条件成立,那么表达式的结果就为1,否则就为0。
< 符号:如果左边的数据小于右边的数据,就表示条件成立,那么表达式的结果就为1,否则就为0。
<=符号:用来判断左边的数据是否小于或者等于右边的数据,比较的是左右两边的数据之间的大小关系。
==符号:用来判断左边的数据是否等于右边的数据。
!=符号:用来判断左边的数据是否不等于右边的数据。
比较表达式的结果的类型是int类型的.,0代表不成立,1代表成立。
5. 常见的一些比较表达式的写法:
判断一个数是不是另外一个数的倍数。
原理:求余数。如果余数为0,那么就是倍数,否则就不是。
(a % b) == 0;
如果成立,就说明a是b的倍数。例如:
#include <stdio.h>
int amin()
{
int i = 5;//定义整型变量赋值为5
//将i模2后的值与0比较,相等就将1赋给num,否则将0赋给num
int num = (i%2) == 0;
printf(“num = %d”,num);
}
比较运算符的两边可以都为一个表达式,比较的是两个表达式的结果。
6. 运算符的优先级
不同的运算符他们的优先级是不一样的,C语言中的运算符的优先级一共分为15级,先计算优先级比较高的,再计算优先级比较低的。
二、逻辑运算符与逻辑表达式
1、逻辑运算符:
&& || !
作用:用来指定多个条件之间的关系,最主要的关系两种:并且或者
2、逻辑表达式
由逻辑运算符连接起来的式子,就叫做逻辑表达式。
作用:用来判断多个条件在使用这个逻辑运算符的情况下是否成立。
因为逻辑表达式是用来描述多个条件的,所以结果仍然是int类型的。0代表不成立,1代表成立。
3、逻辑运算符:&&读作:逻辑与、并且。
逻辑运算符是用来描述多个条件是否成立的,所以逻辑运算符一般情况下两边都是1个条件表达式。
只有&&两边的条件都成立的情况下,整个逻辑表达式才成立.。只要有1边不成立那么整个逻辑表达式的结果就不成立。
0 && 0 0
1 && 0 0
0 && 1 0
1 && 1 1
并且:表示的意思是只有两边都成立整个逻辑表达式的结果才成立,只要有1边不成立,则整个逻辑表达式的结果就不成立。
计算机在计算逻辑与表达式的的结果的时候,先计算左边的条件表达式,再计算右边的条件表达式。如果左边的条件表达式计算出来是不成立的,那么这个时候就可以确定 整个逻辑表达式的结果为不成立,不会再去计算右边的条件表达式了。
4、逻辑运算符:||读作逻辑或、或者
它是用来指定多个条件之间的关系是或者的关系,只要有1个条件成立那么就成立。只有所有的条件都不满足的时候才补成立。
0 || 0 0
1|| 0 1
0|| 1 1
1|| 1 1
注意:如果左边的条件表达式的结果是成立的,那么这个时候就可以确定整个逻辑表达式都是成立的.这个时候右边的表达式是不会去执行的了。
5、逻辑运算符: !非 取反
C语言中的真假性:0代表假,非0代表真。
取反的意思就是如果这个数据表示真,那么取反以后就变为假(0),如果这个数据表示假(0),那么取反以后就变真(1)。
6、优先级
!优先级最高,然后是&&,最后是 ||
#include <stdio.h>
int main(int argc, const char * argv[])
{
// 请用户输入一个年份,写下判断输入的年份是否为闰年的表达式.然后将结果(0或者1)打印出来.
// 符合以下两个条件之一则为闰年
// ->年份能够被400整除.
// ->年份能够被4整除但是不能被100整除.
int year = 0;
printf("请输入年份:");
scanf("%d",&year);
//(年份能够被400整除) || (年份能够被4整除但是不能被100整除)
int res = year % 400 == 0 || (year%4==0 && year%100 !=0);
printf("%d",res);
第二节 分支结构
一、if语句结构
1、if语句的作用:可以让一段代码只有在满足某个条件的时候才执行,否则不执行。
2、语法:
if(条件表达式)
{
执行代码;
}
3、执行步骤:
先判断条件表达式是否成立,如果成立,就执行if大括弧之中的代码,执行完毕之后,再继续往下执行。如果不成立,就跳过if中的代码往下执行。
4、什么时候要使用if结构:
如果有一段代码不是非要执行,而是只有在满足某个条件的时候执行,那么这个时候就可以使用if结构。
使用:
if(要满足的条件)
{
满足条件要执行的语句;
}
5、if结构的注意点
1). if后面的小括弧中的表达式的类型,其实任意的类型都是可以的。
如果表达式的结果为0 它就认为不成立
如果表达式的结果不是0 它就认为成立
虽然if后的小括弧之中可以写任意类型的表达式,但是绝大多数情况下,这里我们都是写的一个条件表达式。
2). 分号的问题
a.分号在C语言中代表1条语句的结束,所以在每一条语句的后面都要加一个分号来表示这条语句结束了。
我爱你!"); printf("我爱你2!");printf("我爱你3!");
b. 大括弧.代表一个代码块的开始和结束。
不需要加分号,就算要加分号也应该加在结束大括弧的后面。
3). 永真和用假的问题
if(0) 代表永假 if(非0)代表用真.
二、if结构的缺点
1.if结构的缺点:
当条件成立的时候,执行一段代码,当条件不成立的时候就执行另外的一段代码.
可以用if结构来实现,但是效率有点低了,因为要判断多次条件。
2. if-else结构
作用:当条件成立的时候执行一段代码,当这个条件不成立的时候,执行另外一段代码,并且条件只判断一次。
语法:
if(条件表达式)
{
执行代码;
}
else
{
执行代码;
}
执行步骤:
先判断if后的条件表达式的结果。如果条件成立,就执行if块中的代码,执行完毕之后,跳出整个if-else结构继续往下执行。如果条件不成立的就执行else中的代码,其中 的代码执行完毕之后再继续往下执行。
什么时候要使用if-else结构:
如果有两段代码,一段在某个条件成立的时候执行,一段在条件不成立的时候执行,就可以使用if-else结构。
if(条件表达式)
{
条件成立执行的代码;
}
else
{
条件不成立的时候的执行代码
}
3. if-else的注意问题
if与else是一个整体,if与else中间不能插入别的代码。
if与else中的代码绝对不可能同时执行,因为条件判断的结果只有两个。
也不会都不执行,要执行并且只会执行其中的一个。