• 常量表达式: const constexpr


    一、常量表达式

    1、概念

    (1)指值不会改变,在编译过程中就能得到计算结果的表达式;

    (2)编译器会在编译阶段将常量替换为对应的值;

    2、判别

    (1)字面值属于常量表达式

    (2)用常量表达式初始化的const对象也是常量表达式

    (3)是不是常量表达式由数据类型与初始值决定

    const int max_files = 20;
    const int limit = max_files +20; //
    int staff_size = 70;//不是
    const int sz = get_size(); //不是

    二、constexpr变量

    1、说明:

    (1)c++11新规定:允许将变量声明为constexpr类型,以便让编译器来验证变量是否是一个常量表达式

    (2)用constexpr声明的变量一定是个常量表达式,而且必须由常量表达式初始化;

         

    2、constexpr 常量指针

    (1)constexpr会将指针对象置为顶层const

    const int * p = nullptr;  //指向整形常量的指针
    constexpr int * q = nullptr;  //本身是个常量指针
    constexpr const int * p0 = nullptr;

    (2)constexpr指针必须是nullptr、0、或者是储存在某个固定地址中的对象,不可以是函数体中变量;

    (3)constexpr指针跟常量指针一样,既可以指向常量,也可以指向非常量

    // j必须定义在函数体之外!全局变量?
    int j = 0;
    constexpr int * p = &j;
  • 相关阅读:
    洛谷P3796
    cf1291c-Mind Control
    莫比乌斯函数
    C. Mixing Water(三分)
    E. Modular Stability(思维构造)
    【美团杯2020】平行四边形
    原根定义
    E. Are You Fired?(思维)
    102606C. Coronavirus Battle time limit per test4 seconds(三维拓扑序)
    E
  • 原文地址:https://www.cnblogs.com/wllwqdeai/p/13535076.html
Copyright © 2020-2023  润新知