C 流程控制
判断
switch语句
switch语句可以嵌套
switch(expression){
case constant-expression :
statement(s);
break; /* 可选的 */// 如果这里没有break,则会继续执行下面一个case里的语句,直到遇见一个break或者switch语句结束
case constant-expression :
statement(s);
break; /* 可选的 */
/* 您可以有任意数量的 case 语句 */
default : /* 可选的 */
statement(s);
}
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
char grade = 'B';
switch(grade)
{
case 'A' :
printf("很棒!\n" );
break;
case 'B' :
case 'C' :
printf("做得好\n" );
case 'D' :
printf("您通过了\n" );
break;
case 'F' :
printf("最好再试一下\n" );
break;
default :
printf("无效的成绩\n" );
}
printf("您的成绩是 %c\n", grade );
return 0;
}
//输出
做得好
您通过了
您的成绩是 B
三元运算符
Exp1 ? Exp2 : Exp3;
循环
for循环中三个表达式中的每一个都不是必要的,从而可以将某些表达式置空来构造无限循环
#include <stdio.h>
int main ()
{
for( ; ; )
{
printf("该循环会永远执行下去!\n");
}
return 0;
}
while
与do……while
的区别
while语句在执行循环主体前测试条件、而do……while在循环主题执行后测试条件,即循环主体会被至少执行一次
循环控制语句goto
goto语句允许把控制无条件的转移到同一函数内的被标记语句
但是不建议使用goto语句,因为他使得程序的执行流程变得难以跟踪,任何使用goto的语句都可以改写成为其他写法。
语法
goto label;
..
.
label: statement;
#include <stdio.h>
int main ()
{
/* 局部变量定义 */
int a = 10;
/* do 循环执行 */
LOOP:do#label为LOOP的语句
{
if( a == 15)
{
/* 跳过迭代 */
a = a + 1;
goto LOOP;#跳到label为LOOP的语句
}
printf("a 的值: %d\n", a);
a++;
}while( a < 20 );
return 0;
}