• 一起学 c++(五) 运算符、条件语句


    好啦,继续上次的内容,我们来先说下条件运算符。

    这是一个三目运算符,貌似也是c++唯一一个这样的运算符,不过它其实很简单。

    表达式如下:

    Expr1 ? Expr2 : Expr3

    意思就是如果Expr1是真,那么返回Expr2,否贼返回Expr3

    例如:

    int a=10;

    int b=a<3 ? 3 : a; //a<3不成立,所以取a,所以b=a

     

    逗号表达式:

    (exp1,exp2)

    其求职过程是分别求2个表达式的值,并以表达式2的值作为整个逗号表达式的值。

    例如:

    #include <iostream>

    using namespace std;

    void main()

    {

         int a=2,b=4,c=6,x,y;

         y=((x=a+b),b+c);

         cout<<y<<endl;

         cout<<x<<endl;

    }

    结果为y10x6

    需要注意的是:

    1.       逗号表达式可以是一般形式中的表达式1和表达式2,也可以是逗号表达式。例如以下嵌套关系:

    表达式1,(表达式2,表达式3)                 因此可以把逗号表达式扩展为:

    表达式1,表达式2,表达式3

    2.       在程序中使用逗号表达式,通常为了求逗号表达式的各个值

    3.       不是所有的逗号的地方都是逗号表达式,所以要注意区分

     

     

    求字节数运算符:sizeod(exp1)

    刚开始看的时候,大家可能都认为这是个函数,但是还是要记住它不是。exp1可以是变量,也可以是某种数据类型的名称

     

    下面来看个很重要的问题,就是运算符的优先级问题,优先级高的先于优先级低的进行运算,如果在一个运算中的优先级相同,则按运算符的结合性所规定的结合方向处理

    优先级

    运算符

    结合性

    1

    ()  []  ->  .  ::  ++(后置)  --(后置)

    à

    2

    !  ~  ++(前置)  --(前置)  + * &(强转) sizeof new delete

    à

    3

    .  ->

    à

    4

    /  %  *

    à

    5

    +  -

    à

    6

    <<  >>

    à

    7

    <=  <  >  >=

    à

    8

    ==  !=

    à

    9

    &

    à

    10

    ^

    à

    11

    |

    à

    12

    &&

    à

    13

    ||

    à

    14

    ?:

    à

    15

    =  *= /=  +=  -=  |=  <<=  >>=

    à

    16

    ,

    à

     

     

    说到强转,来说下类型转换

    C++提供了2中转化机制:一是自动转换,二是强制转换。

    自动转换发生在不同数据类型的量混合元算时,由编译器自动完成。转换规则是小类型总是被提升成大类型。以防止精度丢失。

    强制转换是通过类型转换运算来实现的:一般形式如下:

    (类型说明符)表达式            (float) a

    关于类型转换我们以后还会说到

     

    下面我们开始接触语句了。

    什么是语句,它由由变量声明和表达式构成,将特定的关键和语法,按一定的功能组织起来的语句。

    ;   //这是一个最简单的语句,空语句

    float a=1.0f;  //声明语句

    当然语句不是只有这样,大部分我们会使用复合语句

    那么我们先来看看条件语句,顾名思义,就是满足条件才执行的语句喽

    条件语句的基本形式:

    If(表达式1)

             语句1 ;

    或者

    If(表达式1)

    {

             语句1 ;

    }

    我们可以理解为:如果表达式1是真的,那么执行语句1,否则不执行语句1

    我建议大家最好都用第二种,有大括号包着,看着比较清晰明白

    先来看个简单的例子:

    #include <iostream>

    using namespace std;

    void main()

    {

         int a=2,b=4;

         if (a<b)

         {

             cout<<"a<b"<<endl;

         }

     

         if (a>b)

         {

             cout<<"a>b"<<endl;

         }

    }

     

    a2b4a自然小于b,所以a<b为真,就输出了a<ba>b不满足,所以自然不会进入cout<<”a>b”<<endl

     

    条件语句的其他形式

    if-else形式:

    if(表达式)

             语句1;

    else

             语句2;

     

    我们可以理解为:如果表达式是真的,那么执行语句1,否则执行语句2.

    那么我可以把上面那个例子改下变成:

    if (a<b)

    {

         cout<<"a<b"<<endl;

    }else

    {

         cout<<"a>b"<<endl;

    }

     

    结果是一样的

     

    if-else继续引出的就是if-elseif-else,它的表达式是:

    if(表达式1)

             语句1;

    else if(表达式2)

             语句2;

    else

             语句n;

     

    我们可以理解为:如果表达式1为真,那么执行语句1,如果表达式2为真,那么执行语句2……,都不满足的时候,执行语句n

    例如我们把之前例子加个等于的判断:

    #include <iostream>

    using namespace std;

    void main()

    {

         int a=2,b=4;

         if (a<b)

         {

             cout<<"a<b"<<endl;

         }

         else if(a==b)

         {

             cout<<"a==b"<<endl;

         }

         else

         {

             cout<<"a>b"<<endl;

         }

    }

    条件语句的基本形式就是这样的,但是不仅仅限于此,嵌套式的条件语句用处更加广泛。

    所谓嵌套式if的语句,就是if语句中,执行语句还是if

    我们继续拿之前的例子修改下,看下什么是嵌套式的if语句

    #include <iostream>

    using namespace std;

    void main()

    {

         int a=2,b=4;

        

         if(a!=b)

         {

             if (a<b)

             {

                  cout<<"a<b"<<endl;

             }

             else

             {

                  cout<<"a>b"<<endl;

             }

         }

         else

         {

             cout<<"a==b"<<endl;

         }

    }

    再来看看另一个条件语句switch语句

    Switch语句的表达式:

    switch (表达式)
            {
                case
    常量表达式1 :

    语句1;

                              break;
                case
    常量表达式2:

    语句2;

                              break;
                default :  

                                语句n;

                              break;
            }

    我们可以理解为:表达式的值与之后的常量表达式1,2…n直到都不满足的default进行比较,如果表达式的值与某个常量表达式的值相等,就执行对应的语句。

    例如:

    #include <iostream>

    using namespace std;

    void main()

    {

         int a=2;

         switch(a)

         {

         case 1:

             cout<<"1"<<endl;

         case 2:

             cout<<"2"<<endl;

         case 3:

             cout<<"3"<<endl;

         default:

             cout<<"不是1,2,3"<<endl;

         }

    }

    我们执行一下:

    结果是

    2

    3

    不是1,2,3

    为什么会这样,我们想要的就是2这个结果,仔细观察下就会发现,我们这里没写break;

    这个在初期学习的过程中经常出现的问题,所以要注意哦。

    所以在每一个条件后面都要加上break;

    修改后:

    #include <iostream>

    using namespace std;

    void main()

    {

         int a=2;

         switch(a)

         {

         case 1:

             cout<<"1"<<endl;

             break;

         case 2:

             cout<<"2"<<endl;

             break;

         case 3:

             cout<<"3"<<endl;

             break;

         default:

             cout<<"不是,2,3"<<endl;

             break;

         }

    }

     

    这样就没问题了

     

    个人网站http://www.ravedonut.com/

  • 相关阅读:
    搭建vue开发环境的步骤
    widow怎么结束某端口占用
    替换数据库表中某个代码段中某个字段的某一段字符串sql
    sql优化
    scssmap对象访问
    IntelliJ IDEA 和 webstorm更换主题
    css滚动条样式
    redis set
    【LeetCode】128. 最长连续序列
    第二章 模型评估
  • 原文地址:https://www.cnblogs.com/panjiangfy/p/cxuexi5.html
Copyright © 2020-2023  润新知