• C++分支语句


    在日常生活中的很多时候,我们要进行判断,比如说:判断1+1是否等于2,今天的主食吃米饭还是馒头,喜欢一个人到底要不要表白......咳咳,总之,需要做判断的情况有很多很多。程序本就是为了解决问题而编写的,自然也有很多需要进行判断的地方。这一节的内容就是学会如何使用分支语句进行判断。

    在学习分支语句前先介绍一个新的数据类型:布尔值(bool)

    在C++中,布尔值只有两种,即真(true)和假(false),然后我们来看一下布尔表达式,布尔表达式是用来判断布尔值为真还是假的表达式,例如:

    1+1==2; //布尔值为真

    1+1!=3; //布尔值为假

    连接两边的叫做关系运算符,有下面几种:(注意等于是两个“=”)

    下面我们学习最简单的单分支if语句

    if(boolean-expression)//括号中的是一个布尔值,当其为真时,执行下面statement语句
    {
        statement(s);//要执行的部分,有分号
    }//注意括号要成对,没有分号

    然后我们来学习如何声明布尔值,并在if分支语句中使用它:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     bool boolean = 1;
     8 //声明一个bool类型的变量boolean,1或其他非0值表示true,0表示false;
     9     if (boolean)//以if关键字开头的分支语句,当括号内为真时,输出true;
    10     {
    11         cout << "true";
    12     }
    13     return 0;
    14 }

    运行后的结果就是输出一个单词“true”,如果将boolean = 1改成boolean = 0,那么运行的结果是什么都不输出,因为boolean现在的值是false。

    但是如果我们想知道boolean是什么的时候,我们可以使用双分支if-else语句

    if(boolean-expression)
    {
        statement(s)-for-true-case;
    }
    else //如果布尔表达式不是true,执行下面语句
    {
        statement(s)-for-false-case;
    }

    举个例子,如果我们想让用户输入一个圆的半径进而求出圆的面积,那么用户就不能输入小于0的数:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     const double PI = 3.14159;//定义一个常量PI的数值为3.14159
     8     double radius = 0,area = 0;
     9     //定义double变量radius和area分别为圆的半径和所求的面积
    10     cin >> radius;//输入圆的半径
    11     
    12     if(radius>=0)//判断输入的半径是否合法
    13     {
    14         area = radius*radius*PI;
    15         cout << "面积为:" << area;
    16     }
    17     else
    18     {
    19         cout << "无效输入,请输入不小于0的值";
    20     }
    21     return 0;
    22 }

    如果statement只有一句(像上面else中的情况),可以不写括号,但是并不建议,因为在修改时很容易造成错误。

    然后就是if嵌套语句多分支的if-else语句

    上图中的a就是if嵌套语句,b则是多分支语句,两者表达的意思一样,但是第二种风格要更好一些。

    接下来我们来学习逻辑运算符

    以及它们各自的真值表:

    "!", "&&", "||" 分别表示离散数学中的逻辑非,逻辑与,逻辑或(相当于集合的补,交,并)。

    比如说我要判断一个整数是否大于10且小于等于20:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int num = 0;
     8     cin >> num;
     9     
    10     if(num>10&&num<=20)
    11     {
    12         cout << "合法输入"
    13     }       
    14     else
    15     {
    16         cout << "非法输入";
    17     }
    18     return 0;
    19 }

    除了if,还有一种分支语句,是switch语句。switch语句可以简化多重情况的分支语句。

    switch(switch-expression)
    {
        case value1:statement(s)1;break;
        //当switch表达式匹配到的值为value1时,执行statement1语句,并且跳出语句块
        case value2:statement(s)2;break;
        //当switch表达式匹配到的值为value12时,执行statement2语句,并且跳出语句块
        ...
        case value1n:statement(s)n;break; 
        //当switch表达式匹配到的值为valuen时,执行statementn语句,并且跳出语句块
        default:statement-for-default;
        //当switch表达式匹配不到给定的value时,执行statement-for-default语句后退出
    }
    
    //上面代码等同于下面代码:
    if(if-expression==value1)
    {
        statement(s)1;
    }
    else if(if-expression==value2)
    {
        statement(s)2;
    }
    else ...if(if-expression==valuen)
    {
        statement(s)n;
    }
    else
    {
        statement-for-default;
    }

    再来说一下条件表达式,它是C++中唯一一个三元运算符,格式如下:

    bool-expression ? expression1 : expression2;
    //如果bool表达式为真,则表示expression1,否则为expression2
    
    //相当于:
    if (bool-expression)
    {
        expression1;
    }
    else 
    {
        expression2;
    }

    运算符的优先级:

    因为要记住这些优先级很麻烦,所以建议可以不用去记优先级,多用括号即可。

  • 相关阅读:
    springCloud学习总览
    leetcode Q46.把数字翻译成字符串
    手把手教你用redis实现一个简单的mq消息队列(java)
    主流排序算法全面解析
    从零开始react实战:云书签(总览)
    从零开始react实战:云书签-1 react环境搭建
    springboot整合elasticsearch7.2(基于官方high level client)
    你知道如何在小程序中推送模板消息?
    最新ubuntu搭建公网个人邮件服务器(基于postfix,dovecot,mysql)
    手把手docker部署java应用(初级篇)
  • 原文地址:https://www.cnblogs.com/bwjblogs/p/11620661.html
Copyright © 2020-2023  润新知