各位前辈,我最近在自学C++prime5,里面有一段关于常量表达式的概念把我搞混了
里面有这么一段关于常量表达式的定义:
常量表达式是指值不会改变并且在编译的过程中就能得到结果的表达式。显然,字面值属于常量表达式....
然后书上关于字面值得解释是这样的:
字面值类型一般比较简单,值也显而易见,容易得到,就把他们称为“字面值”类型。算术类型,引用和指针都属于字面值类。
那我这样定义:
int a=42;
这个变量a 属于字面值类型吧?那它不就是一个常量表达式了?
书里的定义是不是有错?是不是 字面值常量类型才是常量表达式?
谢谢各位前辈指教
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这里说的常量表达式和常量是两个不同的概念,虽然翻译成中文都一样。
我们知道,C++中一个变量、一个数字、一个包含运算符的算式、一个包含等号的算式都可以视作表达式,比如
a
42
a + 42
a = 42
a == 42
a == a + 42
等等,这些都是表达式。
其中42就是一个常量,它也是字面值,你不能改变42。
a = 42
此时a也是一个表达式,但是a是变量,你可以改变a的值。