前言
鼠鼠也是才学C语言,屏幕前的各位多指教,鼠鼠耐骂。
编程里的分支结构要理解其实也就是数学里的树状图,把所需要的情况一点点根据数据分类好,再用编程语言的语法写好就行。
一、if语句
1、if本身用法
如果判断表达式的结果为真(也就是表达式内容正确(或者说表达式返回的值非0),比如判断a>6,正确则返回值1,执行if管理的语句块,错误则返回值0,不执行并继续往下走)
最建议的就是不管if下方跟着几条语句,咱都向条件反射一般地在if下方先打入一个花括号,毕竟学校教材总是在语句那里只写一条语句,虽然是可行的,但if下方智能管理一条语句,咱老实人就老实点奥
if(判断表达式)
{
语句块
}
//不太建议的写法,因为容易只操作一条语句而不自知,
//就像别人触怒(条件)你
//但是你只能骂出来一句小学生语录(跟紧的一条语句)
//有攻击性的话说不出来一样(剩下需要但搞不出来的语句)
if(a==1)
printf("沃恁爹");
printf("对不起啦别生气");
2、else用法
(1)简单用法
简单用法就是在if语句的大括号下方写else,若程序不满足if的条件表达式,那么就必然执行else内的语句块。
当然“咱都向条件反射一般地在if下方先打入一个花括号”这一中肯建议同样适用于else。
if(判断表达式)
{
语句块
}
else
{
语句块
}
(2)嵌套用法(有两种写法)
写法一 根源的写法
按照if 和else的语法规则运行
if(exp1)
{
if(exp2)
{
语句
}
else
{
语句
}
}
写法二 简写的写法(这样写的话我更愿意叫他分割)
同样按照先前讲解的语法运行
if(exp1)
{
}
else if
{
}
else if
{
}
else
{
}
(3)else就近原则
也就是else会和最上面的且最近的一个if语句构成if else语句
对齐没有任何效果。
拿一个可读性不高的但是经常狗屎学校被拿来出题的东西举例:
int a=0,b=2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
运行结果是啥都么有:
此时第二个if和else构成一个if else语句整体,第一个if(没有{})由于能够管理仅仅下一行的代码,而第一个表达式判断为假,故而不执行下一行的代码,不进入第二个if语句的判断,直接return 0 。
二、 三种常用操作符
1、关系操作符
六种:< <= > >= == !=
小于 小于等于 大于 大于等于 等于 不等于
判定通过则降下雷罚(bushi),通过则返回真(即非0值)
假则返回0
必然不能像数学里那样连续使用
举错误例子:a<b<c
举正确例子:a<b && b<c
(&&是逻辑操作符,下面马上讲到)
2、条件操作符(C的唯一三目操作符)
如果exp1为真,那么执行exp2
如果exp1为假,那么执行exp3
exp1 ? exp2 : exp3
3、逻辑操作符(双目操作符)
(1)种类共有三种
逻辑或 ||
只要有一个逻辑或管理的语句为真,那么逻辑或整条语句都为真
如果逻辑或管理的语句全部为假,那么逻辑或整条语句都为假
if(month == 12 || month==1 || month == 2)
{
printf("冬季\n");
}
逻辑与 &&
只要有一个逻辑与管理的语句为假,那么逻辑与整条语句都为假
如果逻辑与管理的语句全部为真,那么逻辑与整条语句都为真
if(month >= 3 && month <= 5)
{
printf("春季\n");
}
逻辑否 !
能够逆转真与假
if(!a)//没有!的原本语句是a非0就执行语句,有了!后是a为0执行语句
{
printf("fuck the world !");
}
(2)逻辑短路
只出现在||和&&的情况里
由于逻辑操作符是从左到右依次执行
那么逻辑或||,只要按顺序执行的时候出现任何一个返回值为真的表达式,那么后面的逻辑或语句就不再执行,整个逻辑或表达式返回值为真。
那么逻辑与&&,只要按顺序执行的时候出现任何一个返回值为假的表达式,那么后面的逻辑与语句就不再执行,整个逻辑与表达式返回值为假。
int i = 0,a=0,b=2,c =3,d=4;
i = (a++ && ++b && d++);
//若i = (a++||++b||d++)是什么结果
printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
return 0;
运行结果的值是1 2 3 4
开局直接断 对a加1 剩下的的语句都不操作
运行结果的值是 1 3 3 4
判断完b的时候就断 a=0的返回值为假 a加1 b=2的返回值为真 b加1 剩下的语句都不操作
三、 switch语句
C语言用来使用分支结构的另一种语句,是⼀种特殊形式的 if…else 结构,用于判断条件有多个结果的情况。它把多重的 else if 改成更易用、可读性更好的形式。
使用方法:
exp可以是任意整型和字符型(可以是一个式子的计算结果),同样case后面跟的v也必须是整型和字符型。
若exp和case后面的值能对应则执行该条case后面的语句,且没有其他操作语句,就会向下执行下方所有case后面跟着的语句到default后的语句,除非有其他的操作语句。
若不可对应则跳转到default并执行后面的语句(可以没default语句,这样的话在exp和v无法对应的时候就直接结束这段switch语句)
switch (exp)
{
case v1: statement
case v2: statement
...
default: statement
}
1、特殊语句
(1)break语句
效果是退出当前层级的switch语句
int day = 0;
scanf("%d", &day);
switch(day)
{
case 1:
printf("星期⼀\n");
break;
case 2:
printf("星期⼆\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
输入1,则打印:星期一
(2)default语句
可以放在switch语句里的任何地方,但是通常放在结尾处,因为放在哪并不改变其功能。
功能:1、表达式的值与所有case后的值都无法对应时,那么直接执行default后的语句
2、在switch语句里如果没有提前结束switch语句的话,就会按顺序执行到default后的语句
(3)go to语句和跳转标号
go to语句可以在一个函数内实现任意位置的跳转,跳转后按顺序继续往下执行
goto fzx;
fzx:
printf("嗨嗨嗨,鸡汤来咯");
那么执行到goto这一行的时候,就会直接跳转到跳转标号的位置继续往下执行
共勉
以下就是我对 分支 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出哦,同时我还会继续更新【C】,请持续关注我哦!!!