分支语句和循环语句
1.分支语句
1.1if分支
if (condition1) // condition:可以判断true/false(1/0)的条件
{
doSomething1; // condition1为true(1)则进入该语句块执行内容,为false(0)则不进入,继续判断condition2
// 执行完毕则离开整个判断语句(如果执行了doSomething1,后续即使condition2为true,也不会执行doStherthing2)
}
else if (condition2)
{
doStherthing2; // 如果再执行了doSomething1,后续仍然想判断condition2来判断是否需要执行doStherthing2,可以将"else if (condition2)"修改为"if (condition2)"
}
else
{
doOtherting; // 前面的所有判断均为false后进入该语句块执行内容
}
-
真假的值
// <stdbool.h> #define true 1 #define false 0 // 0为false(假) // 非0为true(真)
-
执行完毕则离开整个判断语句(如果执行了doSomething1,后续即使condition2为true,也不会执行doStherthing2)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FhhnIEts-1674020782122)(.\if1.png)]
- 如果再执行了doSomething1,后续仍然想判断condition2来判断是否需要执行doStherthing2,可以将"else if (condition2)“修改为"if (condition2)”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iLHFUD8w-1674020782122)(.\if2.png)]
建议:
在与常量进行判断时,可以将常量置于表达式的左端,以避免书写"==“时误写为”="!
eg:
if (-1==arr)
{
doSomething1;
}
else if (0==arr)
{
doSomething2;
}
else if (1==arr)
{
doSomething3;
}
else
{
doOtherthing;
}
这样书写的好处是,当你不慎将"1==arr"写成了"1=arr",编译器会指出这是"不可修改的左值"
,而如果当你不慎将"arr==1"写成了"arr=1",编译器只会认为你先将"1"赋值给"arr"然后再判断"arr"的true/false,从而造成不易发现的过错
1.2switch分支
switch(integerExpression) // 操作数是整形表达式(字符也可以当作整形)
{
case int1: // 整形1("操作数==int1"则进入,不满足则判断"int2")
doSomething1; // 执行的语块1
break; // 退出该"switch"
case int2: // 整形2
doSomething2; // 执行的语块2
break; // 退出该"switch"
case int3: // 整形3("操作数==int3"则进入,不满足则判断"int4")
// 满足条件进入后,因为没有语句块则无相关操作
// 但是同时没有"break"语句,所以会"直接"进入"case int4"执行"doSomething4"
case int4: // 情况1:不满足"int3"的条件没有进入"case int3",则会判断"操作数==int4"
// 2:满足"int3"的条件进入"case int3",因为"case int3"没有"break"语句,"直接"进入"case int4"执行"doSomething4"
doSomething4;
case int5: // 情况1:不满足"int4"的条件没有进入"case int4",则会判断"操作数==int5"
// 2:无论什么情况只要进入"case int4"执行了"doSomething4",因为"case int4"没有"break"语句,"直接"进入"case int5"执行"doSomething5"
doSomething5;
break; // 进入"case int5"遇见"break"退出
default: // 其他的情况
doOtherthing;
break;
}
建议:
无论是否有"default"情况需要执行相关语句,都应当写入。
default:
break;
2. 循环语句
2.1
**建议:**
无论是否有"default"情况需要执行相关语句,都应当写入。
~~~ c
default:
break;