详解C++编程中的条件判断语句if-else与switch的用法

详解C++编程中的条件判断语句if-else与switch的用法,第1张

概述if-else语句控制条件分支。语法if(expression)statement1[elsestatement2]备注如果expression的值不为零,执行statement1。如果选项else存在,如果expression的值为零,执行statement2。表达式必须是算术

if-else 语句
控制条件分支。
语法

  if ( Expression ) statement1[else statement2]

备注
如果 Expression 的值不为零,执行 statement1 。如果选项 else 存在,如果 Expression 的值为零,执行 statement2。 表达式必须是算术或指针类型,或者必须是定义明确的整型或指针类型转换的类类型。有关转换器的信息,请参见标准转换。
在两个形式的 if 语句和 Expression 语句中计算,可以具有除结构以外的任何值,包括所有副作用。除非 statement 中的一个包含 break、 continue 或 goto,控件才能从 if 语句传递到项目中的下一条语句。
if...else 语句的 else 子句与在没有相应的 else 语句的同一范围的最接近的前面 if 语句相关。
为了使此示例可以明确有关 if...else 配对,取消对大括号的注释。

// if_else_statement.cpp#include <stdio.h>int main() { int x = 0; if (x == 0) {  printf_s("x is 0!\n"); } else {  printf_s("x is not 0!\n"); // this statement will not be executed } x = 1; if (x == 0) {  printf_s("x is 0!\n"); // this statement will not be executed } else {  printf_s("x is not 0!\n"); } return 0;}

输出:

x 是 0!x 不是 0!

switch 语句
允许根据整型表达式的值在多个代码段中进行选择。
语法

 switch ( Expression )case constant-Expression : statement[default : statement]

备注
Expression 必须属于整型或存在到整型的明确转换的类类型。将按照整型提升中所述的方式执行整型提升。
switch 语句体由一系列 case 标签和一个可选 default 标签组成。 case 语句中的两个常量表达式的计算结果不能为同一个值。 default 标签只能出现一次。标记语句不是语法要求,但如果它们不存在,switch 语句是无意义的。默认语句无需显示在末尾;它可以显示在 switch 语句体的任何位置。case 或 default 标签只能显示在 switch 语句内。
每个 case 标签中的 constant-Expression 将转换为 Expression 类型,并将与 Expression 比较是否等效。控制到其 case constant-Expression 与 Expression 的值匹配的语句的传递。下表中显示了生成的行为。
switch 语句行为

条件 *** 作
转换后的值与提升的控制表达式的值匹配。转换后的值与提升的控制表达式的值匹配。 控制将转移到跟在该标签后面的语句。
没有常量与 case 标签中的常量匹配;default 标签存在。 控制将转移到 default 标签。
没有常量与 case 标签中的常量匹配;default 标签不存在。 控制将转移到 switch 语句之后的语句。

如果找到匹配的表达式,则后续 case 或 default 标签不会妨碍控制。 break 语句用于停止执行并将控制转移到 switch 语句之后的语句。如果没有 break 语句,则将执行从匹配的 case 标签到 switch 末尾的每个语句,包括 default。例如:

// switch_statement1.cpp#include <stdio.h>int main() { char *buffer = "Any character stream"; int capa,lettera,nota; char c; capa = lettera = nota = 0; while ( c = *buffer++ ) // Walks buffer until NulL {  switch ( c )  {   case 'A':   capa++;   break;   case 'a':   lettera++;   break;   default:   nota++;  } } printf_s( "\nUppercase a: %d\nLowercase a: %d\nTotal: %d\n",capa,(capa + lettera + nota) );}

在上面的示例中,如果 c 是大写 A,则 capa 将递增。 capa++ 之后的 break 语句会终止 switch 语句体的执行并将控制转移到 while 循环。如果没有 break 语句,lettera 和 nota 也将递增。 case 'a' 的 break 语句也能达到类似的目的。如果 c 是小写 a,则 lettera 将递增,并且 break 语句将终止 switch 语句体。如果 c 不是 a 或 A,则将执行 default 语句。
switch 语句的内部块可以包含带有初始化的定义,前提是可以访问到它们 - 即,所有可能的执行路径都不会绕过它们。使用这些声明引入的名称具有局部范围。例如:

// switch_statement2.cpp// C2360 expected#include <iostream>using namespace std;int main(int argc,char *argv[]){ switch( tolower( *argv[1] ) ) {  // Error. Unreachable declaration.  char szChEntered[] = "Character entered was: "; case 'a' :  {  // Declaration of szChEntered OK. Local scope.  char szChEntered[] = "Character entered was: ";  cout << szChEntered << "a\n";  }  break; case 'b' :  // Value of szChEntered undefined.  cout << szChEntered << "b\n";  break; default:  // Value of szChEntered undefined.  cout << szChEntered << "neither a nor b\n";  break; }}

switch 语句可以嵌套。在这种情况下,case 或 default 标签将与封装它们的最近的 switch 语句关联。

总结

以上是内存溢出为你收集整理的详解C++编程中的条件判断语句if-else与switch的用法全部内容,希望文章能够帮你解决详解C++编程中的条件判断语句if-else与switch的用法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1249798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存