前两节主要介绍了C语言的类型本节中开始说明C语言中构建复杂语句的方法。这些方法主要解决工程中遇到的问题如需要根据情况执行不同的代码这个就涉及到分支和循环语句。对于分支语句涉及到的关键字如下所示。if...elseswitch...case...defaultbreakcontinuereturn分支语句分支语句主要用于根据不同条件执行不同的代码块。C语言支持两种类型的分支语句if...else if...else语句和switch...case语句。if语句其中if语句格式如下所示。// if格式 if (condition1) { // 代码块1 } else if (condition2) { // 代码块2 } else { // 代码块3 } // 举例说明, if代码块进行表达式判断 if (a 0) { printf(a is positive\n); } else if (a 0) { printf(a is negative\n); } else { printf(a is zero\n); } // 举例说明, if代码块进行表达式判断 if (a 1) { printf(a is one\n); } else { printf(a is other\n); }可以看到if...else if...else语句可以根据多个条件执行不同的代码块。if语句是按照顺序执行的当检测到第一次满足条件后就可以执行对应的代码块而后续条件则会被忽略。对于if中的语句支持使用符号逻辑与、||逻辑或、!逻辑非进行组合。具体示例如下所示。// 举例说明逻辑与 if (a 0 b 0) { printf(a and b are positive\n); } // 举例说明逻辑或 if (a 0 || b 0) { printf(a or b is positive\n); } // 举例说明逻辑非 if (!(a 0)) { printf(a is not positive\n); }对于C语言来说如果比较数据短可以使用?:运算符进行条件判断。其格式如下所示。// ?:格式 (condition) ? expression1 : expression2; // 举例说明?:运算符 int a 10; int b 20; int max (a b) ? a : b; printf(max %d\n, max);对于?:运算符如果condition为真则返回expression1否则返回expression2。switch语句switch语句格式如下所示。// switch格式 switch (expression) { case value1: // 代码块1 break; case value2: // 代码块2 break; default: // 默认代码块 break; } // 举例说明整型 switch (a) { case 1: printf(a is one\n); break; case 2: printf(a is two\n); break; default: printf(a is other\n); break; } // 举例说明枚举类型 typedef enum { RED 0, GREEN 1, BLUE 2, } color_t; color_t color GREEN; switch (color) { case RED: printf(color is red\n); break; case GREEN: printf(color is green\n); break; case BLUE: printf(color is blue\n); break; default: printf(color is other\n); break; }可以看到switch语句也可以根据不同的条件执行不同的代码块。不过和if语句不同switch后要求的是变量只能是整型(char、short、int、signed)或者枚举类型不能是表达式case后要求的是常量表达式或者枚举类型的具体值不能是变量或者表达式。注意**对于switch语句中除非需要两个case语句连续执行否则每个case语句后面必须要加上break语句。**这是因为case支持穿透代码会继续执行直到遇到break、return或switch结束很多switch语句中的问题都是遗漏了break语句导致的。
C语言基础语法,分支语句
前两节主要介绍了C语言的类型本节中开始说明C语言中构建复杂语句的方法。这些方法主要解决工程中遇到的问题如需要根据情况执行不同的代码这个就涉及到分支和循环语句。对于分支语句涉及到的关键字如下所示。if...elseswitch...case...defaultbreakcontinuereturn分支语句分支语句主要用于根据不同条件执行不同的代码块。C语言支持两种类型的分支语句if...else if...else语句和switch...case语句。if语句其中if语句格式如下所示。// if格式 if (condition1) { // 代码块1 } else if (condition2) { // 代码块2 } else { // 代码块3 } // 举例说明, if代码块进行表达式判断 if (a 0) { printf(a is positive\n); } else if (a 0) { printf(a is negative\n); } else { printf(a is zero\n); } // 举例说明, if代码块进行表达式判断 if (a 1) { printf(a is one\n); } else { printf(a is other\n); }可以看到if...else if...else语句可以根据多个条件执行不同的代码块。if语句是按照顺序执行的当检测到第一次满足条件后就可以执行对应的代码块而后续条件则会被忽略。对于if中的语句支持使用符号逻辑与、||逻辑或、!逻辑非进行组合。具体示例如下所示。// 举例说明逻辑与 if (a 0 b 0) { printf(a and b are positive\n); } // 举例说明逻辑或 if (a 0 || b 0) { printf(a or b is positive\n); } // 举例说明逻辑非 if (!(a 0)) { printf(a is not positive\n); }对于C语言来说如果比较数据短可以使用?:运算符进行条件判断。其格式如下所示。// ?:格式 (condition) ? expression1 : expression2; // 举例说明?:运算符 int a 10; int b 20; int max (a b) ? a : b; printf(max %d\n, max);对于?:运算符如果condition为真则返回expression1否则返回expression2。switch语句switch语句格式如下所示。// switch格式 switch (expression) { case value1: // 代码块1 break; case value2: // 代码块2 break; default: // 默认代码块 break; } // 举例说明整型 switch (a) { case 1: printf(a is one\n); break; case 2: printf(a is two\n); break; default: printf(a is other\n); break; } // 举例说明枚举类型 typedef enum { RED 0, GREEN 1, BLUE 2, } color_t; color_t color GREEN; switch (color) { case RED: printf(color is red\n); break; case GREEN: printf(color is green\n); break; case BLUE: printf(color is blue\n); break; default: printf(color is other\n); break; }可以看到switch语句也可以根据不同的条件执行不同的代码块。不过和if语句不同switch后要求的是变量只能是整型(char、short、int、signed)或者枚举类型不能是表达式case后要求的是常量表达式或者枚举类型的具体值不能是变量或者表达式。注意**对于switch语句中除非需要两个case语句连续执行否则每个case语句后面必须要加上break语句。**这是因为case支持穿透代码会继续执行直到遇到break、return或switch结束很多switch语句中的问题都是遗漏了break语句导致的。