必威体育Betway必威体育官网
当前位置:首页 > IT技术

常量表达式

时间:2019-07-11 14:40:00来源:IT技术作者:seo实验室小编阅读:89次「手机版」
 

常量表达式

字面值:是一个不能改变的值,如数字、字符、字符串等。单引号内的是字符字面值,双引号内的是字符串字面值。

字面值类型(literal type):算数类型、引用和指针等。

常量表达式(const experssion):是指(1)值不会改变 并且 (2)在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。

一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。

const int a =1;		//常量表达式
cosnt int b=a+1;	//常量表达式
int c=2;		//初始值是字面值常量,当c数据类型是普通int。
const int d=fun();	//fun()值要在运行时得到,d不是字面值常量。

constexpr变量

C++11新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量的是否是一个常量表达式。

声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化。

constexpr函数

constexpr函数是指能用于常量表达式的函数。

应遵循的约定:函数返回类型及所有形参的类型都是字面值类型,而且函数体中必须有且只有一条return 语句。

constexpr函数体内可以有其他语句,只要这些语句在运行时不执行任何操作。(例如,空语句、类型别名和using声明等)

constexpr函数被隐式地指定为内联函数。

constexpr int fun(int a){ return a*10; }
若a是常量表达式,fun(a)就是常量表达式。若a不是常量表达式,fun(a)就是变成普通函数。

当constexpr函数是常量表达式时可以用来初始化constexpr变量。

constexpr和指针

constexpr声明中定义了一个指针,限定符constexpr仅对指针对象有效,与指针所指的对象无关。

const int *p1=nullptr;		//p1是指向整形常量的指针
constexpr int *p2=nullptr;	//p2是指向整形的常量指针
(等效于 int *const p2=nullptr;)
但constexpr声明的指针初始值只能是0、nullptr和存储于某个固定地址中的对象。因为它是常量表达式(常量表达式定义(2))。

相关阅读

常用15个js正则表达式

在表单验证中,使用正则表达式来验证正确与否是一个很频繁的操作,本文收集整理了15个常用的javaScript正则表达式,其中包括用户名、密

正则表达式

在很多技术领域(如:自然语言处理,数据存储等),正则表达式可以很方便的提取我们想要的信息,所以正则表达式是一个很重要的知识点!一、概念

Visual Studio error C2001:常量中有换行符(解决办法)

http://www.cnblogs.com/kuliuheng/archive/2013/10/30/3397796.html在Visual Studio自动生成的项目中,碰见了一件关于文件编码的

Cron表达式与CronTrigger

如果你需要的是基于日历表示法的调度,而不是基于指定间隔的简单调度,那么CronTrigger比SimpleTrigger更合适。使用CronTrigger,你可

Lambda表达式

本质上是一个匿名的方法: 先看下面这个例子,一个传统的方法 `public int add(int x,int y){ return x+y; }` 转换为Lambd

分享到:

栏目导航

推荐阅读

热门阅读