• 运算符和表达式


    运算符和表达式

      C语言中运算符的种类有很多,最常见的就是 + - * / ,除此之外,还有其他运算符可以帮助我们实现更加复杂的程序

      表达式,是由运算符、变量、常量 这三种中的一种或几种组成的

      一个合法的表达式 不一定要有运算符,但是运算符自己无法构成合法的表达式

      作为一个表达式,如何正确地看待?

      <1>看 表达式的 功能

      <2>看 表达式的 值

     

    一.[算术运算符] + - * / %

     

      原则:相同类型的数据在一起做运算,结果还是原来的类型。

      %--取余--运算的结果是余数。

      取余运算的左右两边的操作数必须是正数

      不同类型的数据要做混合运算,必须要遵循以下原则

      10%1.2

      <1>整型要向浮点型看齐:int+float=float

        1.2f%2.4

        printf("%c ",10+'a');

      <2>单精度要向双精度看齐:float+double=double

      <3>短字节向长字节看齐:char+int=int

      <4>*有符号向无符号看齐:int+unsigned int=unsigned int 

    int v1=10;
    unsigned int v2=-1;
    //有符号整型变量 v1,0000 0000~0000 1010
    //无符号整型变量 v2,1111 1111~1111 1111--- 2^32-1
    if(v1>v2)
    {
        printf("v1>v2
    ");
    }
    else
    {
        printf("v1<=v2
    ");
    }
    printf("v2==%u
    ",v2); 

     

    二.[赋值运算符] =

     

      赋值表达式:

        变量=表达式

      [功能]赋值表达式的功能:计算右边表达式的值,给左边变量赋值

      [值]    整个赋值表达式的值是左边变量被赋值之后的值。

      [注]    赋值表达式左边必须是变量

      C中求x的y次方,用 pow 函数,这是个系统库函数

      使用这个函数,需要包含头文件 math.h

      <>是用来包含系统头文件,“”是用来包含用户自己创建的头文件

     

    三.[复合赋值运算符] +=  -=  *=  /=  %=

     

      赋值表达式:

        变量 += 表达式

      相当于:变量 = 变量 + 表达式

        例子:a += 10 相当于 a = a + 10

      [功能]在变量a原值的基础上累加一个值

      [值]    整个表达式的值是左边变量被赋值以后的值

      [注]    赋值号左边必须是变量

     

    四.[逗号运算符] ,

     

      逗号表达式:

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

        例子:a,10

      [功能]从左到右,依次计算每一个表达式的值

      [值] 逗号表达式 整体的值是 最右边表达式的值

     

    五.[关系运算符]  <  <=  >  >=  ==  !=

     

      关系表达式:

        表达式1 < 表达式2

      [功能]计算运算符左右两边的表达式的值,比较大小

      [值]    关系表达式 所表示的关系成立,整个表达式的值称为逻辑“真”,对应数字1

        关系表达式  所表示的关系不成立,整个表达式的值称为逻辑“假”,对应数字0

      关系运算符构成的表达式 往往和if语句(流程控制语句)结合起来使用

     

    六.[自增/自减运算符]  ++  - -  

     

      自增表达式:变量++    ++变量

      自减表达式:变量- -     - -变量

      [功能]不论是自增表达式还是自减表达式,都是对变量本身进行加减操作

      变量++,++变量,都是让变量自身的值加1

      变量- - , - -变量,都是让变量自身的值减1

      [值] 作为自增、自减,表达式是有值的

      变量++,[先取值,再++],先取的值 作为 整个表达式的值

      ++变量,[先++,再取值],后取的值 作为 整个表达式的值

     

    七.[强制类型转换 - 运算符]

     

      (type)表达式

      [注]强制类型转换运算符 改变的只是表达式的值的类型

     

    八.[三目运算符]  ?:

     

      单目运算符:只需要结合一个操作就可以构成合法表达式  ++  - -  &

      双目运算符:需要结合两个操作数才可以构成合法的表达式  +  -  *  /  %  +=

      三目运算符表达式: 

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

      [功能]先计算表达式1的值,根据表达式1的值的“真”、“假”(“真”为1,“假”为0),决定计算表达式2还是表达式3

      如果表达式1为“真”,计算表达式2的值,表达式3被忽略

      如果表达式1为“假”,计算表达式3的值,表达式2被忽略

      [值] 如果表达式1的值为“真”,执行表达式2,表达式2的值作为整个表达式的值

      如果表达式1的值为“假”,执行表达式3,表达式3的值作为整个表达式的值

     

    九.[逻辑运算符] &&  ||  !

     

    [与表达式]

        表达式1&&表达式2

      [功能] 根据&&左右两边表达式的值判断总表达式的值是否为“真”

      [值]

         表达式1 表达式2 总表达式

        真

        假

        真

        假

      [注] 左右两个表达式的值,有一个为“假”,结果就为“假”

      [注] 实际在程序中,当左边的表达式1为“假”时,总表达式立即为“假”,表达式2被忽略(短路)

    [或运算符]  ||  读作“或者”

      或表达式:

        表达式1||表达式2

      [功能]  从左到右依次计算每个表达式的值,根据两个表达式的值,决定总表达式的值的“真假”

      [值]

        表达式1 表达式2 总表达式

        真

        假

        真

        假

      [注]  左右两个表达式有一个为“真”,结果就为“真”

      [注]  在实际的开发中,当左边表达式1为“真”时,总表达式就为“真”,表达式2被忽略(短路)

    [非运算符]  !

      非表达式:

        !表达式

      [功能]  计算表达式的值,然后取反(“假”变“真”,“真”变“假”)

      [值]    

        表达式 总表达式

        真     假

        假     真

     

    [总结] 在一个表达式中,如果有多个运算符,优先级高的运算符优先和操作数结合

      分析任何一个表达式,首先要分清运算符的优先级,然后优先级高的优先结合,最后再去运算

  • 相关阅读:
    【转】属性与字段的区别
    学习C/C++的经验谈(转)
    [C++语法] 关键字typedef用法(转)
    让我们习惯在底层用C++宏生成代码 (转)
    C/C++笔试题 (二)【转】
    C/C++笔试题 (三)【转】
    C语言 printf格式控制符 完全解析
    C/C++笔试题 (一)【转】
    C++内存管理详解(转)
    【转】 Source Insight设置
  • 原文地址:https://www.cnblogs.com/firstsky/p/5374718.html
Copyright © 2020-2023  润新知