前言:因为C语言是结构化的程序设计语言,这里面的结构指的是顺序结构,选择结构,循环结构,在日常生活中,所见的事都能拆分成这几个结构或者这三种结构的组合。
if语句
if
if在英文中有如果的意思,在C语言中意思相似
if (表达式)
要执行的语句
如果表达式成立(为真),则执行语句,如果不成立(为假),则不执行该语句,可以用简单的代码来实现一个分支结构
要强调的是,在C语言中,0为假,非0为真,意思是不管表达式不成立或者是表达式的真实结果真的为0,那么下面的语句都不会执行,有些人很难会把结果的不成立和准确的数字联系起来(我也这样)
else
else在if语句中同样重要,else在C语言中与if搭配起来就是
if(表达式)
要执行的语句
else
会怎么样
按照我们能理解的话来形容就是“如果表达式成立,那么执行语句,否则(表达式不成立)会怎么样”
举个栗子:
if(今天晚上交作业)
不用挨打
else
要挨打
这个代码的语法意思是如果今天晚上交作业就不会挨打,否则就会挨打
要注意的是,if和else都默认控制一条语句,如果想让他控制多条语句,那么就要用{ }来把想让他们控制的语句包住
if(今天晚上交作业)
不用挨打
有鸡腿吃
else
要挨打
如果晚上交作业,在此代码的前提下只控制着不用挨打,不能控制吃鸡腿
但如果加了{}
if(今天晚上交作业)
{
不用挨打
有鸡腿吃
}
else
要挨打
这样,今天晚上交作业就能控制不用挨打和晚上吃鸡腿啦
嵌套
if…else…语句中可以在嵌套一个if…else…达到多重判断的效果
举个例子
if(今天晚上交作业)
不用挨打
{
if(作业完成的好)
有鸡腿
}
else
要挨打
代码在此语法结构的意思是,如果晚上交作业,那么就不用挨打,如果还写的好,那么就有鸡腿吃,如果晚上不叫作业,那么就要挨打
这时有人会问了:“为什么嵌套的if要在大括号里头啊”,这就牵扯到了另一个问题,悬空else问题,因为else总是和离他最近的if匹配,以免产生歧义,所以我们在嵌套时习惯打一个大括号来区分(当然如果嵌套的是一个完整的if…else…语句或者没有else又或者不加逻辑也正确那么可以选择不加,看自己的判断哦)
关系操作符
我们在写表达式时经常会写到两个变量的关系,这时我们就会用到关系操作符。关系操作符主要有:
>
大于运算符<
小于运算符>=
大于等于运算符<=
小于等于运算符==
相等运算符!=
不相等运算符
有趣的来了,前面我有讲过,C语言中0表示假,非零表示真(大多数为1),所以如果是这样1>2,
那么他返回的值的值为1
所以如果连等3<4<5
,那么他先判定3<4,判定结果为真,返回值1,随后判定1<5,所以连等的结果可能正确,但是过程可能和你想的不同。
如果想达到连等的效果,可以使用条件操作符
逻辑操作符
如果我们想达到1<x<3
的效果,这时我们需要逻辑操作符,将他改成x>1 && x<3
,&&就是条件操作符
条件操作符有
!
:逻辑取反运算符(改变单个表达式的真假)&&
:逻辑与运算符,可以理解为并且的意思,如果两侧都为真,那么判定为真||
:逻辑或运算符,可以理解为或者的意思,如果两侧有一个为真,那么判断为真
条件操作符
条件操作符是一个三目操作符,形式为:(a)?(b):(c)
计算逻辑是:如果a为真,那么计算b,如果a为假,计算c
用条件操作符可以让你的代码看起来更简洁一点
比如我想知道a和b哪个值更大,我就可以
...
int c = a>b ? a : b;
printf("c")
短路
C语言的逻辑运算符是从左往右计算,如果的左边表达式符合运算条件,就不会再对右边的表达式求职,这种情况称为短路
假如说
if(a < 3|| a > 1)
如果结果满足第一个条件,返回值为1,后面的结果不用判断,直接判断if
为真(因为||
两边有一个为真就代表表达式为真)
switch语句
Switch语句和if语句的作用相似,都用来实现分支结构,形式是这样:
switch (表达式)
{
case a:
case b:
default:c
}
就是根据表达式的值来确定case的分支,如果表达式的值是a,那么执行第一个case,如果表达式的值是b,那么执行第二个case,如果都不符合,那么执行default
PS:1. case和后面的数字之间必须有空格。2. 在每一个case语句代码执行完成后,需要加上break
才能跳出这个switch语句,如果不加上break呢?
break
如果某一个case语句后面没有break,那么代码就会继续往下执行,可能会执行其他case语句中的代码,直到遇到break或者代码运行结束
所以可以说break语句才是switch语句能够执行的灵魂,实现了能够在分支中控制代码运行的作用,当然break语句不是必须加的,根据实际情况自己做出判断
default
之前在将switch语句的形式中已经讲过,如果都不满足执行case的条件那么就会执行default
,有点像if语句中的else
通常情况下我们把default
放在所有case
的最后,但是如果不放到最后也是可以的,只要在switch语句中的任意位置就行
while语句
while语句是一种循环语句,while的语法结构和if的很相似,但是他们的区别是while语句会有循环的效果。
while(表达式)
要执行的语句;
while的执行流程是:先直接判定表达式,表达式为假,循环直接结束,表达式不为零则执行循环语句,执行完后再判断是否进行下一次循环
for循环
for
循环是三种循环中循环最多的,for
循环的语法形式是:
for( a ; b ; c )
首先执行a初始化循环变量,接下来执行b的判定部分,如果判断为0则循环结束,如果判断不为零,如果判断不为零则执行循环语句,循环语句执行完后,再去执行c,调整循环变量,然后再去b判断,看是否执行下一次循环
在整个for循环的过程中,a只执行1次,剩下的就是在b和c之间循环
举个例子:
#include<stdio.h>
int main()
{
int i = 0;
for(i = 1;i <= 10; i++)
{
printf("i");
return 0;
}
代码运行顺序是:i = 1,判定i是否<=10,如果i<=10,那么执行printf(“i”),然后i++,然后继续判断i是否<=10,是否进行循环
do while循环
do while循环用的最少,形式也比较特殊
do
语句
while(表达式)
他和while循环和for循环有些不同,while循环和for循环都是先判断,再决定是否进入循环语句,而do while循环是直接进入循环体,执行循环语句,然后在执行while循环
do while循环的优点是会直接进行一次语句,然后在执行while循环,所以在do while语句中循环体是至少执行一次
举个栗子:同样都是在屏幕上打印1-10
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("1");
i+=1
}
while(i<=10);
return 0;
}
注意:目前我所接触的只要do while语句的while表达式后面带;
continue
continue语句会直接跳过cintinue后面的语句,例如:
#include<stdio.h>
int main()
{
int i = 1;
do
{
if(i == 5)
continue;
printf("1");//如果continue运行,那么此行跳过
i+=1//如果continue运行,那么此行跳过
}
while(i<=10);
return 0;
今天的就讲完啦,如果有错误大家多多提意见,大家一起进步!!!
标签:语句,执行,C语言,while,从零开始,表达式,重生,else,循环 From: https://blog.csdn.net/yttandb/article/details/140675967