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

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, lettera, (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 语句关联。

(0)

相关推荐

  • 详解C语言中条件判断语句if和switch的用法

    if 语句 用 if 语句可以构成分支结构,它根据给的条件进行判定,以决定执行哪个分支程序段. C 语言的 if 语句有三种基本形式 第一种形式: if(条件表达式) { 语句1: } if(条件表达式) { 语句1: } 这种形式运行顺序为:当条件表达式为真,执行语句1,否则,直接跳过语句1,执行后面的语句. 例子1: BOOL result = YES: if(result) { printf("result is true\n"); } BOOL result = YES: if

  • C语言菜鸟基础教程之条件判断

    (一)if...else 先动手编写一个程序 #include <stdio.h> int main() { int x = -1; if(x > 0) { printf("x is a positive number!\n"); } else { printf("x is not a positive number!\n"); } return 0; } 运行结果: x is not a positive number! 程序分析: 定义一个整数

  • C语言 条件判断详细介绍

    C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false. 下面是大多数编程语言中典型的判断结构的一般形式: 判断语句 C 语言提供了以下类型的判断语句.点击链接查看每个语句的细节. 语句 描述 if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成. if...else 语句 一个 if 语句 后可跟一个可选的 else

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

    if-else 语句 控制条件分支. 语法 if ( expression ) statement1 [else statement2] 备注 如果 expression 的值不为零,执行 statement1 .如果选项 else 存在,如果 expression 的值为零,执行 statement2. 表达式必须是算术或指针类型,或者必须是定义明确的整型或指针类型转换的类类型.有关转换器的信息,请参见标准转换. 在两个形式的 if 语句和 expression 语句中计算,可以具有除结构以外

  •  python 中的条件判断语句的使用介绍

    目录 1. 避免多层分支嵌套 2. 封装过于复杂的逻辑判断 3. 不同分支下的重复代码 4. 合理使用三元表达式 5. 常见技巧 5.1德摩根定律 5.2自定义类的魔法方法 5.3在条件判断中使用 all() / any() 5.4使用 try/while/for 中 else 分支 6. 常见陷阱 6.1与 None 值得比较 5.2and 和 or 的运算优先级 1. 避免多层分支嵌套 Python中利用缩进来替代 { }.如果多个 if 嵌套, 堪称 ” 嵌套 if 地狱 “ 下面的代码直

  • 详解Python中的条件判断语句

    一个else语句可以使用if语句结合起来.如果在if语句中的条件表达式解析为0或false值,那么else语句包含代码执行. else语句是可选的声明,并if语句下面最多只有一个else语句. 语法: if ... else语句的语法是: if expression: statement(s) else: statement(s) 例子: #!/usr/bin/python var1 = 100 if var1: print "1 - Got a true expression value&qu

  • 详解Java编程中if...else语句的嵌套写法

    if...else if...else语句 if语句后面可以跟elseif-else语句,这种语句可以检测到多种可能的情况. 使用if,else if,else语句的时候,需要注意下面几点: if语句至多有1个else语句,else语句在所有的elseif语句之后. If语句可以有若干个elseif语句,它们必须在else语句之前. 一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳过执行. 语法 if...else语法格式如下: if(布尔表达式 1){

  • 详解Python编程中基本的数学计算使用

    数 在 Python 中,对数的规定比较简单,基本在小学数学水平即可理解. 那么,做为零基础学习这,也就从计算小学数学题目开始吧.因为从这里开始,数学的基础知识列位肯定过关了. >>> 3 3 >>> 3333333333333333333333333333333333333333 3333333333333333333333333333333333333333L >>> 3.222222 3.222222 上面显示的是在交互模式下,如果输入 3,就显

  • 详解Swift编程中的常量和变量

    常量 常量指的是程序无法在其执行期间改变的固定值. 常量可以是任何像整型常量,浮点常量,字符常量或字符串的基本数据类型.也可以是枚举常量. 这些常量和常规变量处理一样,只是它们的值不能在定义后进行修改. 声明常量 使用常量时,则必须使用关键字 let 声明它们如下: 复制代码 代码如下: let constantName = <initial value> 下面是一个简单的例子来说明如何在 Swift 中声明一个常量: 复制代码 代码如下: import Cocoa let constA =

  • 详解C++编程中对于函数的基本使用

    形式参数和实际参数 在调用函数时,大多数情况下,函数是带参数的.主调函数和被调用函数之间有数据传递关系.前面已提到:在定义函数时函数名后面括号中的变量名称为形式参数(formal parameter,简称形参),在主调函数中调用一个函数时,函数名后面括号中的参数(可以是一个表达式)称为实际参数(actual parameter,简称实参). [例]调用函数时的数据传递. #include <iostream> using namespace std; int max(int x,int y)

  • 详解C#编程中异常的创建和引发以及异常处理

    创建和引发异常 异常用于指示在运行程序时发生了错误.此时将创建一个描述错误的异常对象,然后使用 throw 关键字"引发"该对象.然后运行时搜索最兼容的异常处理程序. 当存在下列一种或多种情况时,程序员应引发异常: 方法无法完成其中定义的功能. 例如,如果方法的参数具有无效值: static void CopyObject(SampleClass original) { if (original == null) { throw new System.ArgumentException

  • 详解C#编程中构造函数的使用

    当类或结构创建时,其构造函数调用.构造函数与选件类或结构相同,并且,它们通常用于初始化新对象的数据成员. 在下面的示例中,使用一个简单的构造函数定义了名为 Taxi 的类.然后使用 new 运算符来实例化该类.在为新对象分配内存之后,new 运算符立即调用 Taxi 构造函数. public class Taxi { public bool isInitialized; public Taxi() { isInitialized = true; } } class TestTaxi { stat

  • 详解Java编程中包package的内容与包对象的规范

    包的内容 包的内容应该仔细设计,使其只包含在功能上相关的类和接口.包中的类可以自由地访问该包中其他类的非私有成员,有些类甚至可能有足够的权限去访问其他类的内部细节,为了避免这样的类对类成员进行误操作,我们需要对类成员进行保护.任何没有被声明为private的成员都可以被同一个包中的其他所有类型访问,所以任何不相关的类之间的藕合程度都可能会比我们所期望的程度高. 包还为寻找有用的接口和类的程序员提供了逻辑分组的功能.由不相关的类组成的包使程序员很难分辨出哪些接口和类是有用的,而类的逻辑分组可以帮助

随机推荐