C语言(4.流程控制语句)
C 语言中,语句共分为5类
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
流程控制语句就是控制程序执行顺序和是否执行的语句,共分为3类
- 条件判断语句(分支语句):if、switch
- 循环执行语句:do while、while、for
- 转向语句:break、goto、continue、return
英语翻译:(这么理解就行了)
- expression:表达式
- statement:语句
条件判断:expression为真则执行statement,为假不执行
if (expression)
{
statement;
}
条件判断:expression为真执行statement_1,为假执行statement_2
if (expression)
{
statement_1;
}
else
{
statement_2;
}
多分支条件判断:expression_1为真执行statement_1,否则判断expression_2,为真执行statement_2,否则执行statement_3
if (expression_1)
{
statement_1;
}
else if (expression_2)
{
statement_2;
}
else
{
statement_3;
}
if (expression)
statement_1;
statement_2;
statement_3;
if (expression_1)
statement_1;
if (expression_2)
if(expression_3) //和else匹配
statement_2;
else
statement_3;
- if关键字与表达式之间有个空格,目的是为了突出if关键字,看着醒目
- 表达式后要跟大括号,即使只有一个语句,不容易混淆
- else要单独占一行,也是突出关键字,并且也要大括号
- 过长的表达式可以分行书写
if (expression_1 && //if后跟空格
expression_2 && //过长的表达式分成3行书写,整齐有序
expression_3)
{ //跟大括号
statement_1;
}
else //单独占一行
{ //此处依然要大括号
statement_2;
}
switch (整型表达式)
{
case 整型常量表达式1:
statement_1;
case 整型常量表达式2:
statement_2;
default:
statement_3;
}
switch (n) //若n为2
{
case 1:
statement_1;
case 2: //从statement_2开始执行
statement_2;
case 3: //由于case击穿,case 2后的所有case和default语句都会执行
statement_3; //statement_3执行
default: //statement_4执行
statement_4;
}
switch (n) //若n为2
{
case 1:
statement_1;
break;
case 2:
statement_2; //从statement_2开始执行
break; //break打破switch的执行,跳出语句,后面不会执行
case 3:
statement_3; //statement_3不会执行
break;
default:
statement_4; //statement_4不会执行
break;
}
switch (n) //若n为2
{
case 2: //从statement_2开始执行
statement_2;
case 1: //由于case击穿,case 2后的所有case和default语句都会执行
statement_1;
default:
statement_4; //statement_4执行
case 3:
statement_3; //statement_3执行
}
switch (n) //switch和表达式之间留空隔
{
case 1: //case语句起下一行再写语句
statement_1;
break;
case 2:
statement_2;
break;
case 3:
statement_3;
break;
default: //default每个都写上,即使没有内容也写
statement_4;
break; //break带不带都一样,但是建议带上
}
表达式为非0执行,表达式为0不执行
while (expression)
{
statement;
}
while后加空格,突出关键字,表达式过长分行书写
while (expression1 && //while后空格
expression2 && //表达式过长就分行书写
expression3)
{
statement;
}
for (expression1; expression2; expression3)
{
statement;
}
for循环中3个表达式均可以省略,如以下3个for循环都没有语法错误
for (; expression2; expression3)
{
statement;
}
for (; ; expression3)
{
statement;
}
for ( ; ; )
{
statement;
}
int i = 0;
for (i=0; i<10; i++) //合理运用空格,前闭后开
{
printf("%d ", i);
}
先执行循环体,如果表达式为0则跳出循环
do
{
statement;
}
while (expression);
使用场景有限,并不是很常用
do
{
statement;
}
while (expression);
用来打破case击穿的,使switch语句实现分支功能
跳出循环,执行循环外的下一个语句,但是只能跳一层循环
int i = 0;
for (i=0; i<10; i++)
{
int j = 0;
while (j<10)
{
++j;
break; //执行此语句时跳出while循环
}
}
跳过本次循环,执行下一次循环,不终止整个循环
int i = 0;
for (i=0; i<5; i++)
{
if (i == 2)
{
continue; //跳过本次循环,进入下一次循环,i==2时跳过了本次循环内容
}
printf("%d ", i); //打印结果为0,1,3,4,5。
}
goto A; //定义标签A,跳转到A标签
...
A: //A标签
...
for (...)
for (...)
{
for (...)
{
for (...)
{
if (expression)
{
goto Exit; //跳出循环
}
}
}
}
Exit: //执行以下语句
...
结束函数执行,返回一个值给函数调用者
int test(void)
{
return 3;
}
注意:
void test(void)
{
return;
}