C++条件语句和条件运算符的使用方法讲解

if语句的3种形式

1) if(表达式) 语句。

例如:

 if(x>y) cout<<x<<endl;

这种if语句的执行过程见下图。

2) if(表达式) 语句1 else 语句2

例如:

 if (x>y) cout<<x;
 else cout<<y;

见图。

3)

if(表达式1) 语句1
 else if(表达式2) 语句2
 else if(表达式3) 语句3
 …
 else if(表达式m) 语句m
 else 语句n

例如:

if (number>500) cost=0.15;
else if(number>300) cost=0.10;
else if(number>100) cost=0.075;
else if(number>50) cost=0.05;
else cost=0;

流程图见图。

说明:
从图3.5和图3.6可以看到: 3种形式的if语句都是由一个入口进来,经过对“表达式”的判断,分别执行相应的语句,最后归到一个共同的出口。这种形式的程序结构称为选择结构。在C++中if语句是实现选择结构主要的语句。
3种形式的if语句中在if后面都有一个用括号括起来的表达式,它是程序编写者要求程序判断的“条件”,一般是逻辑表达式或关系表达式。
第2、第3种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号。
在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。

【例】求三角形的面积。

#include <iostream>
#include <cmath> //使用数学函数时要包含头文件cmath
#include <iomanip> //使用I/O流控制符要包含头文件iomanip
using namespace std;
int main( )
{
 double a,b,c;
 cout<<"please enter a,b,c:";
 cin>>a>>b>>c;
 if (a+b>c && b+c>a && c+a>b)
 { //复合语句开始
  double s,area;//在复合语句内定义变量
  s=(a+b+c)/2;
  area=sqrt(s*(s-a)*(s-b)*(s-c));
  cout<<setiosflags(ios::fixed)<<setprecision(4); //指定输出的数包含4位小数
  cout<<"area="<<area<<endl; //在复合语句内输出局部变量的值
 } //复合语句结束
 else cout<<"it is not a trilateral!"<<endl;
 return 0;
}

运行情况如下:

please enter a, b, c:2.45 3.67 4.89
area=4.3565

变量s和area只在复合语句内用得到,因此在复合语句内定义,它的作用范围为从定义变量开始到复合语句结束。如果在复合语句外使用s和area,则会在编译时出错,系统认为这两个变量未经定义。将某些变量局限在某一范围内,与外界隔离,可以避免在其他地方被误调用。
if语句的嵌套

在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:

 if( )
  if( )语句1
  else 语句2
 else
  if( )语句3
  else 语句4

应当注意if与else的配对关系。else总是与它上面最近的、且未配对的if配对。假如写成:

 if( )
  if( )语句1
 else
  if( )语句2
  else 语句3

编程序者把第一个else写在与第一个if(外层if)同一列上,希望else与第一个if对应,但实际上else是与第二个if配对,因为它们相距最近,而且第二个if并未与任何else配对。为了避免误用,最好使每一层内嵌的if语句都包含else子句(如本节开头列出的形式),这样if的数目和else的数目相同,从内层到外层一一对应,不致出错。

如果if与else的数目不一样,为实现程序设计者的企图,可以加花括号来确定配对关系。例如:

 if( )
 {
  if ( ) 语句1
 } //这个语句是上一行if语句的内嵌if
 else 语句2//本行与第一个if配对

这时{ }限定了内嵌if语句的范围,{ }外的else不会与{ }内的if配对。关系清楚,不易出错。

C++条件运算符(? :)
若在if语句中,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且给同一个变量赋值时,可以用简单的条件运算符来处理。例如,若有以下if语句:

 if (a>b) max=a;
 else max=b;

可以用条件运算符(? :)来处理:

 max=(a>b)?a:b;

其中“(a>b)?a:b”是一个“条件表达式”。它是这样执行的:如果(a>b)条件为真,则条件表达式的值就取“?”后面的值,即条件表达式的值为a,否则条件表达式的值为“:”后面的值,即b。

条件运算符要求有3个操作对象,称三目(元)运算符,它是C++中惟一的一个三目运算符。条件表达式的一般形式为:

 表达式1 ? 表达式2 : 表达式3;

条件运算符的执行顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。“max=(a>b)?a:b” 的执行结果是将条件表达式的值赋给max。也就是将a和b二者中的大者赋给max。条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max。

条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。如

 x ? 'a': 'b';

如果已定义x为整型变量,若x=0,则条件表达式的值为字符'b'的ASCII码。表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。如有条件表达式x>y?1:1.5,如果x≤y,则条件表达式的值为1.5,若x>y,值应为1,由于C++把1.5按双精度数处理,双精度的类型比整型高,因此,将1转换成双精度数,以此作为表达式的值。

【例】输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。

#include <iostream>
using namespace std;
int main( )
{
 char ch;
 cin>>ch;
 ch=(ch>='A' && ch<='Z')?(ch+32):ch; //判别ch是否大写字母,是则转换
 cout<<ch<<endl;
 return 0;
}
(0)

相关推荐

  • C++编程中逗号运算符和条件运算符的使用方法讲解

    逗号运算符:, 允许对两个语句进行分组,其中有一个是预期的. expression , expression 备注 逗号运算符具有从左向右的关联性. 由逗号分隔的两个表达式将从左向右进行计算. 始终计算左操作数,并且在计算右操作数之前将完成所有副作用. 在某些上下文(如函数参数列表)中,逗号可用作分隔符. 不要将该逗号用作分隔符与将其用作运算符的情况混淆:这两种用法完全不同. 考虑表达式 e1 , e2 该表达式的类型和值是 e2 的类型和值:e1 的计算结果将被丢弃. 如果右操作数是左值,则结

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

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

  • C++条件及循环语句的综合运用实例

    用下面公式求π的近似值.π/4≈1-1/3+1/5-1/7+-直到最后一项的绝对值小于10-7为止.根据给定的算法很容易编写程序如下: #include <iostream> #include <iomanip> #include <cmath> using namespace std; int main( ) { int s=1; double n=1,t=1,pi=0; while((fabs(t))>1e-7) { pi=pi+t; n=n+2; s=-s;

  • C++编程中__if_exists与__if_not_exists语句的用法

    __if_exists 语句 __if_exists 语句测试指定的标识符是否存在.如果该标识符存在,则执行指定的语句块. 语法 __if_exists ( identifier ) { statements }; 参数 参数 说明 identifier 要测试其存在性的标识符. statements identifier 存在时要执行的一个或多个语句. 备注 若要实现最可靠的结果,请在以下约束条件下使用 __if_exists 语句. 只将 __if_exists 语句应用于简单类型,而不是模

  • C++条件语句和条件运算符的使用方法讲解

    if语句的3种形式 1) if(表达式) 语句. 例如: if(x>y) cout<<x<<endl; 这种if语句的执行过程见下图. 2) if(表达式) 语句1 else 语句2 例如: if (x>y) cout<<x; else cout<<y; 见图. 3) if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 - else if(表达式m) 语句m else 语句n 例如: if (numb

  • Shell脚本的条件测试和if条件语句使用方法

    一.条件测试操作 要使Shell脚本程序具备一定的"智能",面临的第一个问题就是如何区分不同的情况以确定执行何种操作.Shell环境根据命令执行后的返回状态值(¥?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常.使用专门的测试工具--test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立). 使用test测试命令时,包括以下两种形式: test 条件表达式 [ 条件表达式 ] 这两种方式的作用完全相同,但通常后一种形式更

  • 高性能JavaScript循环语句和条件语句

    一.循环语句 众所周知,常用的循环语句有for.while.do-while以及for-in,forEach.除了for-in和forEach性能略低外,平时我们对前三者的选择更多的是基于需求而非性能考虑,今天我们就对它们各自的性能做个测试,告诉我们最极端的情况下还能做哪些优化. 首先我们来谈谈为何for-in和forEach会比其他的慢.for-in一般是用在对象属性名的遍历上的,由于每次迭代操作会同时搜索实例本身的属性以及原型链上的属性,所以效率肯定低下:而forEach是基于函数的迭代(需

  • VBScript教程 第七课使用条件语句

    VB教程 > 第七课使用条件语句 控制程序执行 使用条件语句和循环语句可以控制 Script 的流程.使用条件语句可以编写进行判断和重复操作的 VBScript 代码.在 VBScript 中可使用以下条件语句: · If...Then...Else 语句 · select Case 语句 使用 If...Then...Else 进行判断 If...Then...Else 语句用于计算条件是否为 True 或 False,并且根据计算结果指定要运行的语句.通常,条件是使用比较运算符对值或变量进行

  • ASP基础入门第四篇(脚本变量、函数、过程和条件语句)

    在上一篇小编向大家简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方法,并通过展示 VBScript 在 ASP 程序编写过程中的一系列实例使大家对 VBScript 有更进一层的理解.   函数和过程一样都是命名了的代码块,但它们却有很大的区别,过程完成程序任务,函数则返回值.我们可以这样理解,过程象一个完整的句子,而函数则象一个单词.举个例子,当你想获取某个数的平方根,你只要将该数传给 VBScript 的 Sqr() 函

  • VBS教程:VBScript 基础-使用条件语句

    使用条件语句控制程序执行使用条件语句和循环语句可以控制脚本的流程.使用条件语句可以编写进行判断和重复操作的 VBScript 代码.在 VBScript 中可使用以下条件语句: If...Then...Else 语句 Select Case 语句使用 If...Then...Else 进行判断If...Then...Else 语句用于计算条件是否为 True 或 False,并且根据计算结果指定要运行的语句.通常,条件是使用比较运算符对值或变量进行比较的表达式.有关比较运算符的详细信息,请参阅比

  • Java多线程中不同条件下编写生产消费者模型方法介绍

    简介: 生产者.消费者模型是多线程编程的常见问题,最简单的一个生产者.一个消费者线程模型大多数人都能够写出来,但是一旦条件发生变化,我们就很容易掉进多线程的bug中.这篇文章主要讲解了生产者和消费者的数量,商品缓存位置数量,商品数量等多个条件的不同组合下,写出正确的生产者消费者模型的方法. 欢迎探讨,如有错误敬请指正 生产消费者模型 生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品.生产消费者模式

  • 分享5个小技巧让你写出更好的 JavaScript 条件语句

    在使用 JavaScript 时,我们常常要写不少的条件语句.这里有五个小技巧,可以让你写出更干净.漂亮的条件语句. 1. 使用 Array.includes 来处理多重条件 举个栗子 : // 条件语句 function test(fruit) { if (fruit == 'apple' || fruit == 'strawberry') { console.log('red'); } } 乍一看,这么写似乎没什么大问题.然而,如果我们想要匹配更多的红色水果呢,比方说『樱桃』和『蔓越莓』?我

  • 详解写好JS条件语句的5条守则

    在用 JavaScript 工作时,我们经常和条件语句打交道,这里有5条让你写出更好/干净的条件语句的建议. 目录: 1.多重判断时使用 Array.includes 2.更少的嵌套,尽早 return 3.使用默认参数和解构 4.倾向于遍历对象而不是 Switch 语句 5.对 所有/部分 判断使用 Array.every & Array.some 6.总结 1.多重判断时使用 Array.includes 让我们看一下下面这个例子: // condition function test(fr

随机推荐