C语言简明教程(九)(分支语句和跳转语句)

接上一节循环语句实例详解
【C语言简明教程(九)(分支语句和跳转语句)】C语言的分支语句有if-else语句、switch语句,跳转语句有break语句、return语句、continue语句,其中return语句用于函数返回值,break语句跳出本控制语句(常见有循环语句和switch语句),continue语句跳过本次循环。分支语句常常需要条件表达式语句,除了上节提到的比较表达式和逗号表达式,还有逻辑表达式。
一、逻辑运算符和逻辑表达式常用的逻辑运算符有与或非& & 、||、!,以及三目运算符?:,具体解释如下:

运算符和逻辑表达式 说明
& & ,a & & b a和b同时为真,该表达式才为真
||,a||b a和b只要有一个为真,则表达式为真
!,!a 对a取反
?:,a?b:c 如果a为真则表达式等于b,否则等于c
二、if else语句C语言网站的if else语句格式如下:
if(表达式1){ 语句1; } else if(表达式2){ 语句2; } else{ 语句3 }

其中表达式1和表达式2是条件测试表达式,可用的表达式有比较表达式、逗号表达式和逻辑表达式,else if的语句块可以有多个,该if else语句只会执行其中一个语句块,若找到一个符合条件的则执行,执行完毕跳出该语句块,后面有符合条件的也不再检查,如果单独使用多个if判断,则每个都会执行,下面是if else语句的完整代码案例,其中使用到getchar和putchar字符输入输出函数,用于从控制台读取一个字符或输出一个字符,字符测试的相关函数再头文件ctype.h中。
#define SIZE 64void print_01(void){ // if else语句示例,循环从控制台读入字符,模拟命令行持续处理(一次性处理可以使用主函数main(int char**)) char ch; char str[SIZE]; memset(str, 0, SIZE); int i = 0; while ((ch = getchar()) != EOF){ if(ch != '\n'){ str[i] = ch; i++; } else{ run(str); if(strcmp(str, "quit") == 0) break; i = 0; memset(str, 0, SIZE); putchar('\n'); } } putchar('\n'); }void run(char *message){ // if-else if-else语句 if(strcmp(message, "java") == 0) // java编译 printf("compile java source successfully"); else if(strcmp(message, "python") == 0) // 执行python脚本 printf("running python script..."); else if(strcmp(message, "time") == 0){ // 获取本地当前时间 char local_time[128]; format_time(local_time); printf("current time: %s", local_time); } else printf("processing..."); }// 自定义格式化时间处理 char * format_time(char *local_time){ struct tm *ptm; time_t t = time(NULL); ptm = localtime(& t); int year = ptm->tm_year + 1900; int month = ptm->tm_mon + 1; int day = ptm->tm_mday; int hour = ptm->tm_hour; int minute = ptm->tm_min; int second = ptm->tm_sec; // 字符串打印函数 sprintf(local_time, "%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); return local_time; }

三、switch语句switch语句语法格式如下:
switch(数值表达式){ case 值1: 语句; case 值2: 语句; default: 默认执行语句; }

switch语句的圆括号中必须是数值类型的变量,case为该变量的可能值,其中要注意,默认情况下所有case的值都会测试,包括执行default语句,如果不需要测试所有情况在每个case语句后加break语句跳出switch语句,switch语句代码实例如下:
char ch = getchar(); switch(ch){ case 'a': printf("A apple below the table.\n"); break; case 'b': printf("Break down the tree is necessary.\n"); break; case 'c': printf("Communicating with them is tired.\n"); break; case 'd': printf("Digital image processing depends on mathematics\n"); break; default: printf("A rainy day is a good day.\n"); }

四、goto语句goto语句的格式如下:
goto: 标签名; // ...语句 标签名: 语句开始;

执行到goto语句会跳转到指定的标签名的语句开始执行,并且不会返回执行,C语言仍然保留goto语句,但是goto语句不是一个友好的语句,尽量或者根本不用去使用它,使用goto语句写出来的代码会非常的难阅读和分析,下面是一个goto语句的代码实例:
printf("001\n"); goto label; printf("002\n"); // 不会执行 label: printf("003\n"); printf("004\n"); // 输出 001 003 004

    推荐阅读