目录
一、分支语句
if
switch
二、循环语句
while
for
do……while
三、转向语句
break
continue
return
goto
区别
以下是我的一点小总结,若有错误请指出 ,谢谢。
C语句分类
表达式语句
函数调用语句
控制语句
复合语句
空语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言是面向过程的语言,也是结构化程序设计,有三种基本结构:顺序结构,选择结构,循环结构)。C语言有9种控制语句。
可分为3类:
分支语句:if switch
循环语句:while for do……while
转向语句:break continue return goto
一、分支语句
1. if语句
if语句可分为单分支,双分支,多分支
单分支:
#include <stdio.h>
int main()
{
……
if(表达式)
语句;
……
return 0;
}
双分支:
#include <stdio.h>
int main()
{
……
if(表达式)
语句;
else
语句;
……
return 0;
}
多分支:
#include <stdio.h>
int main()
{
……
if(表达式)
语句;
else if(表达式)
语句;
else
语句;
……
return 0;
}
其中,表达式结果为真(在C语言中0表示假,非0表示真),才会执行语句;为假则跳过。
若只有一条语句,可直接写;若2条及以上,则要加{ } (因为是复合语句,也就是代码块);
比较值得注意的是,else只与最近的不在{}中的if是一对,也就是就近原则,与是否对齐无关
(对齐是代码风格,为了好看和方便阅读)
下面是一个简单的例子:
#include <stdio.h>
int main()
{
int a=1,b=2;
if(a==3)
if(b==2)
printf("hi\n");
else
printf("ha\n");
return 0;
}
输出结果是 没有输出,因为a==1——>a!=3 ,表达式结果为假,自动跳过。这很好的证明了第二个if和else才是一对。另外他们不在{ }中,是因为if ……else……是一条语句。
但为了方便他人理解和阅读,我们最好不要写出这种会令人误会的代码。
2. switch语句
常常用于多分支情况。
#include <stdio.h>
int main()
{
……
switch(整型表达式)
{
case 整型常量表达式:
语句;
……
default:
语句;
}
……
return 0;
}
首先,带着整型表达式的值进入,按从上到下的顺序与case后的整型常量进行比对,若相同则进入case执行语句,若没有break则接着进入下一个case执行语句,直到遇到break,跳转出来。
字符常量也属于整型家族,因为以ASCII码值进行存储。
default子句:所有case不能匹配的值都到这里来处理,在没有特殊要求的情况下它的位置任意,也就是说可以放在case前面。若对你处理的问题没有用,可以不写。
if语句和switch语句都支持嵌套。
二、循环语句
1. while
#include <stdio.h>
int main()
{
……
while(表达式)
语句;
return 0;
}
与if语句一样,表达式结果为真,执行;为假,不执行(跳出循环)。
若表达式永远成立,则是死循环(没有break、goto、return等)。
2. for
#include <stdio.h>
int main()
{
……
for(初始化部分;条件判断部分;调整部分)
语句;
return 0;
}
()中的3个表达式都可以省略,但会产生不一样的效果。
条件判断部分省略会导致判断恒成立,会造成死循环(没有break、goto、return等)。
初始化部分省略:可能导致再次进入这个for语句时,默认变量是上一次进入后的最终值。
下面我们举一个简单的例子:嵌套for循环
#include <stdio.h>
int main()
{
int i=0,j=0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
printf("hi ");
}
}
return 0;
}
输出结果:打印100个hi
#include <stdio.h>
int main()
{
int i=0,j=0;
for(;i<10;i++)
{
for(;j<10;j++)
{
printf("hi ");
}
}
return 0;
}
输出结果: 打印10个hi
因为i=0进入第一层循环,j=0进入第二层循环,打印10个hi,此时j的值为10跳出第一层循环,i++,i的值变为1再次进入第一层循环,但此时j==10,不满足第二层循环的判断条件,无法进入第二层循环,也就无法打印hi,以此类推,后面都无法打印,所以输出结果是这样的。
另外可以使用多个变量来控制循环。
3. do……while
#include <stdio.h>
int main()
{
……
do
{
语句; //至少执行一次
}while(表达式);
return 0;
}
三、转向语句
1. break和continue



2. return
用作返回值,遇到直接返回值,后面的代码都跳过。只能返回一个值,若遇到 return 3,4; 这种返回4,因为是逗号表达式。
在主函数中 return 0;表示程序结束正常退出。
若是调用函数无返回值 ,那么可以直接写return;即可。

3. goto
可随意滥用,可随意跳转,最常见的用法:终止程序在某些深度嵌套的结构,一次跳出两层或多层循环。
但最好不要使用,因为不安全。
下面用一个可以用来整蛊的小程序体会一下它的用法:

4. 区别
break只能从最内层循环退出到上一层循环。
return使函数直接结束,返回。
goto任意跳转。

1117

被折叠的 条评论
为什么被折叠?



