• c++第二十二天


    p120~p124:

    表达式

    1、表达式由一个或者多个运算对象组成。

    2、最简单的表达式是字面值和变量。

    3、一元运算符作用于一个运算对象,二元则作用于两个。一个运算符到底是几元由上下文决定。

    4、重载运算符。仅改变运算对象和返回值的类型,运算对象的个数,运算符的优先级、结合律无法被改变。

    5、左值与右值。暂且理解为:左值就是Location,可以放在赋值号的两边,右值就是Read,只能放在赋值号的右边。(例如&a返回一个右值,a[2]的求值结果为左值)

    6、左值是可以存放东西的,而右值是只能Read的。

    7、在运算时,高优先级的运算符与运算对象更为紧密地组合在一起,如果运算符的优先级相同,则由结合律决定组合运算对象的顺序。

    例如:算数运算符满足左结合律,则按照从左向右的顺序组合运算对象。

    (但是运算对象的求值顺序与优先级和结合律无关,例如:f() + g() + h()并不知道哪个函数会先计算)

    8、括号无视优先级与结合律。

    9、求值顺序。对于表达式 f1() * f2()并不知道优先计算f1()还是f2(),

    对于表达式 cout << i << " " << ++i << endl 输出是未定义的,可能是 1 1 也可能是 0 1。

    明确规定运算顺序运算符只有四个: && || ?: ,

    10、c++左值与右值

    int main()
    {
        int *p;    // p是一个指向整型的指针
        int a = 1;
        decltype(*p) q = a;    // decltype(返回结果为左值的表达式)的结果是引用类型。这里的q类型为 int&
        // 类似的例子还有 decltype((变量))
        // 补充一点:引用从来都作为所指对象别名出现,只有出现在decltype(里面)是一个例外。
        return 0;
    }

     补充:decltype(&p)结果类型为 int**

    练习 4.1

    105

    练习 4.2

    (a)(*vec).begin()

    (b)((*vec).begin()) + 1

    练习 4.3

    略 

  • 相关阅读:
    Jira 8.5.1 安装教程
    Postgres 10.11安装教程
    SonarQube 7.7 安装教程
    Apollo基于K8S的部署以及接入
    Nexus 安装教程
    Drone 安装教程
    Harbor 安装教程
    Gitlab 11.9.1 高可用教程
    Gitlab 11.9.1 安装教程
    大明的FAQ
  • 原文地址:https://www.cnblogs.com/xkxf/p/6433212.html
Copyright © 2020-2023  润新知