C语言中,分支与循环是实现程序必不可少的两大功能。
所以我斗胆在此浅谈一下C语言中的分支与循环。
一、分支
不像循环中有诸多的表现方式,分支中if以及else占了使用中的绝大部分比重(以我短短的码龄来看),而switch对有限种情况往往有着更简便的书写方式。
IF
if与else在我的眼里就像是一对夫妻一样,如胶似漆,往往成对出现。
形式如下:
if(判断){expression1;expression2;................expression?}
else if{expression1;expression2;................expression?}
else {expression1;expression2;................expression?}
不加大括号的if和else后只能跟一个语句,所以为了避免有多条语句,但是没有加大括号的情况发生,建议在if的条件判断后,一定要加上大括号。
一定要加上大括号!
一定要加上大括号!
一定要加上大括号!
重要的事说三遍!!!
同时,if后的判断语句之中如果有赋值,将会被执行,如:
if(i=3)
所以如果为了防止自己偶然间少打一个代码,可以如下书写:
if(3==i)
这样,如果没有打出两个等号,编译器会自动报错,也能更便利地定位到少打等号的情况里。
Switch
switch语句比较容易理解,表达式如下:
switch(variation){
case 1:expression;
case 2:expression;
......
}
需要注意的是,switch满足条件的时候是从该条件进入。
如何理解这句话?请看以下代码(是一段伪代码)
int i=0;
switch(i)
{
case1:(expression);
case0:(expression);
case2:(expression);
}
这个时候由于i的值为0,所以进入了case0。
但是由于switch实际上是进入入口(switch英语含义毕竟是开关嘛),所以在不写break的时候,同样会执行case2的内容。
所以除非有意为之,建议还是乖乖写好break。
除了case,break以外,default在switch里也是相当常见,以表达不满足任何一个case时的情况。
分支具有可嵌套性
可以在if的表达式中继续嵌套if/switch。所以建议遇到多个需要讨论的情况下,可以一定要加上先画思维导图,然后再从头到尾嵌套分支情况。
二、循环
循环中,for循环,while循环使用方式比较平衡,虽然do while使用频次不比前两种高,但仍有用武之地。
For
for循环书写方式如下:
for(赋值;判断;(一般会写i++,i--这种))
比如:for(i=0;i<=100;i++)【这里注意i需要初始化,判断语句可以不为关于i的,也可以是别的变量的条件】
需要注意的是,for循环的判断语句是为了满足循环条件的,即执行整个循环体的情况。
同样的,for循环不加大括号的时候,也只对后面一句语句生效,所以还是建议写大括号。
往往的,for循环也会有嵌套情况的发生。
如:
for(int i=0;i<=100;i++)
{
for(int j=0;j<=100;j++)
{
}
}
我认为,for循环更多用在与数字相关,有范围的一些表达式上。
While
我认为,while循环比for循环在理解使用上更为简单
代码如下:
while(判断)
{
expression;
}
和分支、for循环一样,while循环后也一般会加上大括号,否则只执行后一句语句。
相比于for,while更适合于变量上的输入/输出/改变。
但是同样可以通过变量自增的方式,实现for的情况,所以这是我认为while比for更易理解的原因。
int i=0;
while(i<=100)
{
i++;
}
但是在书写的时候需要防止多输出一个或者少输出一个数字的情况发生。
do......while
do...while我粗浅地认为是while的另一种形式,先不管设定条件,做一遍再说。
代码书写如下:
do
{
}
while(判断)
同样地,在书写的时候需要防止多输出一个或者少输出一个数字的情况发生。