Cplusplusrookie 2015-02-07 07:38 采纳率: 50%
浏览 1660
已采纳

关于常量表达式的新手问题

各位前辈,我最近在自学C++prime5,里面有一段关于常量表达式的概念把我搞混了
里面有这么一段关于常量表达式的定义:
常量表达式是指值不会改变并且在编译的过程中就能得到结果的表达式。显然,字面值属于常量表达式....
然后书上关于字面值得解释是这样的:
字面值类型一般比较简单,值也显而易见,容易得到,就把他们称为“字面值”类型。算术类型,引用和指针都属于字面值类。
那我这样定义:
int a=42;
这个变量a 属于字面值类型吧?那它不就是一个常量表达式了?
书里的定义是不是有错?是不是 字面值常量类型才是常量表达式?

谢谢各位前辈指教
  • 写回答

3条回答 默认 最新

  • threenewbee 2015-02-07 08:34
    关注

    看书要看原版的,中文版的翻译往往不准确。
    这里说的常量表达式和常量是两个不同的概念,虽然翻译成中文都一样。
    我们知道,C++中一个变量、一个数字、一个包含运算符的算式、一个包含等号的算式都可以视作表达式,比如
    a
    42
    a + 42
    a = 42
    a == 42
    a == a + 42
    等等,这些都是表达式。
    其中42就是一个常量,它也是字面值,你不能改变42。
    a = 42
    此时a也是一个表达式,但是a是变量,你可以改变a的值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!