zoukankan      html  css  js  c++  java
  • 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

    略 

  • 相关阅读:
    Mysql高级第一天(laojia)
    Mysql初级第三天(wangyun)
    Mysql初级第二天(wangyun)
    Mysql初级第一天(wangyun)
    Spring的源码解析
    JAVA8新特性
    java8
    JMM内存模型
    JAVA并发工具类
    mybatis
  • 原文地址:https://www.cnblogs.com/xkxf/p/6433212.html
Copyright © 2011-2022 走看看