常量表达式有两个特性:
1.不会改变
2.在编译期就能得到结果
const满足第一个条件,那么他是否满足第二个条件?
答案是不一定,如果知道const初始化,就可以知道,const对值是没有限制的,const可以是一个函数的返回值,这样就会导致const的初始化在运行时得到结果
int get_value();
int main(){
const int i=get_value();
cout<<i<<endl;
}
int get_value(){
return 1;
}
那么int a=1
这样的情况又是什么样的呢?
首先这个在编译器确实能得到结果,但是a不满足特性1,常量表达式是不会改变的。
从上面两种分析可以得出,判断一个常量表达式要从类型和他的值来分析。
常量表达式的定义和常值以及常量之间的联系是有一定的区别,要根据不同的位置去分析他们的作用