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条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?