常量和常量表达式

  • 常量和常量表达式

    分点1 long型常量以L或者l结尾,有时候,如果一个整数太大无法用int表达,也被当做long型;

    分点1 无符号常量以U或者u结尾,unsigned long型常量以UL或者ul结尾;

    分点1 没有后缀的浮点数常量为double型;

    分点1 有后缀F或者f的浮点数常量是float型,后缀L或者l表示long double型常量;

    分点1 八进制和十六进制的常量也可以使用LU后缀;

    分点1 可以使用八进制或者十六进制数值表示机器字符集中的数值量,从而组成转义字符。基本形式:

    分点2 八进制:'\ooo'  比如,'\013'就是十进制11,表示ASCII码中的纵向制表符

    分点2 十六进制:'\xhh'  比如,'\x7'就是十进制7,表示ASCII码中的响铃符

    分点1 字符常量'\0'表示值为0的字符,也就是空字符null。通常用'\0'的形式代替0,以强调某些表达式的字符属性,但其数字值为0

    分点1 常量表达式是仅仅包含常量的表达式,它在编译的时候进行求值,不是在运行时;

    分点1 '""为空字符串;

    分点1 编译时,可以将多个相邻的字符串常量连接在一起(ANSI C的新特性);

    分点1 存储字符串的物理存储单元数比括在双引号中的字符数多一个;

    分点1 不同枚举中的名字必须互不相同,同一枚举中不同的名字可以具有相同的值;

    分点1 枚举为建立常量值与名字之间的关联提供了一种便利的方式,相对于#define语句来说,枚举的优势在于常量值可以自动生成。

C++11 引入了 constexpr 关键字,用于指定函数或对象是常量表达式常量表达式是在编译时就能计算出结果的表达式,它可以用于数组大小、模板参数等需要在编译时确定的地方。 constexpr 函数 constexpr 函数是指能在编译时求值的函数,它的返回值可以作为常量表达式使用。constexpr 函数的参数和返回值必须是字面类型。 例如,下面的函数就是一个 constexpr 函数: ```cpp constexpr int square(int x) { return x * x; } ``` 我们可以在编译时计算出 square(5) 的值,因此它是一个常量表达式。 constexpr 对象 constexpr 对象是指在编译时就能计算出值的对象。constexpr 对象必须被声明为 const,而且必须用常量表达式初始化。 例如,下面的语句定义了一个 constexpr 对象: ```cpp constexpr int max_num = 100; ``` 我们可以在编译时就知道 max_num 的值是 100,因此它是一个常量表达式。 constexpr 函数和常量表达式的限制 constexpr 函数和常量表达式有一些限制: 1. constexpr 函数必须有一个返回值,而且返回值必须是字面类型。 2. constexpr 函数的函数体必须足够简单,能在编译时被求值。 3. constexpr 函数不能包含任何副作用,比如修改全局变量或调用非 constexpr 函数。 4. constexpr 函数的参数和返回值必须是字面类型。 5. constexpr 对象必须被声明为 const,而且必须用常量表达式初始化。 6. constexpr 对象的类型必须是字面类型。 总结 constexpr 关键字用于指定函数或对象是常量表达式。constexpr 函数和常量表达式必须在编译时就能计算出值,它们有一些限制。constexpr 函数和常量表达式可以用于数组大小、模板参数等需要在编译时确定的地方。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值