博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4 表达式
阅读量:3975 次
发布时间:2019-05-24

本文共 1285 字,大约阅读时间需要 4 分钟。

4 表达式

4.1 基础

4.1.1 基本概念

  • 一元运算符:只作用于一个对象,如( *),(&)
  • 二元运算符:作用于两个对象,如(==),(*)

函数调用也是一种特殊的运算符

组合运算符和运算对象

根据运算符的先后顺序,依次进行运算
在这里插入图片描述

运算对象转换

一般情况下,应是两个类型相同的对象进行运算,但是,有时不需要两个对象相同,只要它们能被转换成相同类型即可

重载运算符

已存在的运算符被赋予了另一层含义,即为重载运算符,如string和vrctor和迭代器的运算符

左值和右值

  • 左值的求值结果是一个对象函数
  • 当一个对象被用作右值时,用的是右值的内容;而左值则为对象的身份(地址)
    在这里插入图片描述

4.1.2 优先级与结合律

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

括号无视优先级与结合律

在这里插入图片描述

4.1.3 求值顺序

在这里插入图片描述

系统不知道i和++i的运算顺序导致出错

在这里插入图片描述

在这里插入图片描述

4.2 算数运算符

在这里插入图片描述

运算顺序:一元>乘法,除,求余>加,减

算数运算符的运算对象和结果均为右值

4.3 逻辑和关系运算符

在这里插入图片描述

逻辑与逻辑或运算符

  • 逻辑与运算符(&&):左右均为真时成立
  • 逻辑或运算符(||):左右一个为真即成立
    在这里插入图片描述

逻辑非运算符

在这里插入图片描述

关系运算符

想联系比较几个值时,切勿以数学方式直接写出

在这里插入图片描述

在这里插入图片描述

相等性测试与布尔字面值

4.4 赋值运算符

在这里插入图片描述

在这里插入图片描述

赋值运算满足左右结合律

在这里插入图片描述

在这里插入图片描述

赋值运算优先级较低

尽量先考虑语句执行顺序,用括号将想要先执行的语句扩起来

在这里插入图片描述

在这里插入图片描述

切勿混淆相等运算符(= =)和赋值运算符(=)

复合赋值运算符

在这里插入图片描述
在这里插入图片描述

4.5 递增和递减运算符

在这里插入图片描述

一条语句中混用解引用和递增运算符

在这里插入图片描述

递增运算符优先级高于解引用

在这里插入图片描述

运算对象可按任意顺序求值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

尽量避免递增运算符带来的歧义,一般可用()来解决

4.6 成员访问运算符

  • 格式:
    在这里插入图片描述

4.7 条件运算符

  • 格式:
    在这里插入图片描述
    在这里插入图片描述

表示先判断grade是否小于60?如果是,finalgrade=fail,否则finalgrade=pass

嵌套条件运算符

将成绩分为high pass,pass和 fail三个等级
在这里插入图片描述
在这里插入图片描述

在输出表达式中使用条件运算符

在这里插入图片描述

由于条件表达式的优先级非常低,使用时尽量运用()

4.8 位运算符

在这里插入图片描述

移位运算符

4.9 sizeof运算符

  • suzeof返回一条表达式或一个类型名字所占的字节数,所得类型为size_t类型

  • 格式:

    在这里插入图片描述

  • 二者区别:

    在这里插入图片描述
    在这里插入图片描述

4.10 逗号运算符

  • 逗号运算符先求左侧表达式的值,再求右侧的值,若二者相同,取左值;若二者不同,取右值
    在这里插入图片描述

4.11 类型转换

  • 如果两种类型可以转换,那么它们必然相关
    如float和int
  • 隐式转换在这里插入图片描述
  • 何时发生隐式转换:
    在这里插入图片描述

4.11.1 算数转换

  • 算术转换:把一种算术类型转换为另一种算数类型
    如:long double和另一类型,最终会被转化为long double
    float和另一类型,最终会被转化为float
  • 整形提升:
    在这里插入图片描述

理解算数转换

在这里插入图片描述
在这里插入图片描述

4.11.2 其他隐式类型

  • 数组转化成指针:绝大多数的数组表达式中,数组会转换为指针

    在这里插入图片描述

  • 指针的转换:常量整数值0和nullptr

  • 转换成布尔类型:

    在这里插入图片描述

  • 转换成常量:允许非常量指针转换为常量,反之不成立

    在这里插入图片描述

  • 类型定义转换:

    在这里插入图片描述

4.11.3 显式转换

命名强制类型转换

  • 格式:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.12 运算符优先级表

在这里插入图片描述

在这里插入图片描述

转载地址:http://rfmki.baihongyu.com/

你可能感兴趣的文章
堆与栈有什么区别?
查看>>
堆与栈有什么区别?
查看>>
操作系统:进程/线程同步的方式和…
查看>>
操作系统:进程/线程同步的方式和…
查看>>
Makefile的编写
查看>>
Makefile的编写
查看>>
C语言常用算法
查看>>
Linux设备驱动调试技术 2
查看>>
Linux设备驱动调试技术 3
查看>>
系统处理 IRQ_EINT0 IRQ_EIN…
查看>>
系统处理 IRQ_EINT0 IRQ_EIN…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
misc_register和register_ch…
查看>>
platform设备添加流程(转载)
查看>>
platform设备添加流程(转载)
查看>>
GCC编译关键字“__attribute_…
查看>>
GCC编译关键字“__attribute_…
查看>>
Linux对I/O端口资源的管理( …
查看>>