zoukankan      html  css  js  c++  java
  • 练习2.36、2.37、2.38

    2.36:关于下面的代码,请指出每一个变量的类型以及程序结束时它们各自的值。

    int a=3,b=4;

    decltype(a) c=a;  //c是int类型的变量

    decltype((b)) d=a;  //d是int&类型的变量  

    ++c;    //c=4

    ++d;    //d=4,a=4

    2.37:赋值是会产生引用的一类典型表达式,引用的类型就是左值的类型。也就是说,如果 i 是int,则表达式 i =x的类型是int&。根据这一特点,请指出下面代码中每一个变量的类型和值。

    int a=3,b=4;

    decltype(a) c=a;  //c是int类型的变量,其值为3

    decltype(a=b) d=a;  //d是int&的引用,d的值即a的值为3

    2.38:说明由decltype指定类型和由auto指定的类型有何区别。请举出一个例子,decltype指定的类型与auto指定的类型一样;再举一个例子,decltype指定的类型与auto指定的类型不一样。

    auto指定的类型是根据表达式的类型判断其变量的类型,并将表达式的值初始化该变量,(编译器通过计算变量的值来判断其类型)其对顶层const对象直接忽略,只关心底层const对象。

    decltype指定的类型是根据选择并返回其操作数的结果作为其变量类型(分析表达式,并得到它的类型),没有实际计算表达式的值,其与auto不同,它同样关注顶层const对象,也关心底层const对象,而且如果表达式是赋值左值表达式的特殊表达式,其返回的结果则是引用,并且其类型就是左值类型。

    两者相同:

    1 int i=0;
    2 auto a=i;
    3 decltype(i) a=0;

    两者不同:

    1 const int i=0,&r=i;
    2 auto a=i;    //int类型
    3 auto ar=r;    //int类型
    4 decltype(i) d=0;    //const int 类型
    5 decltype(r+0) dr=0;//int类型

      

  • 相关阅读:
    python中的 ' ' 和 " "
    Socket编程, 在server端read()函数调用后显示错误:Transport endpoint is not connected (犯了低级错误)
    我也终于申请了自己的博客。
    山之高
    策略模式-Java实现
    SQL事务的四种隔离级别和MySQL多版本并发控制
    用JAMES实现自己的邮件服务器
    windows mysql 自动备份的几种方法
    Hibernate常见配置详细解释
    慕课网-Linux达人养成计划学习笔记
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9372068.html
Copyright © 2011-2022 走看看