gpt4 book ai didi

c++ - 非常量表达式的左值到右值转换的结果是常量吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:30:24 28 4
gpt4 key购买 nike

我想弄清楚以下两个语句是否都使用 ODR 变量“x”(int x=2)。

  1. int c = x;
  2. int y = x+12;
  3. int* z = &x;

我的困惑也是如此:

我有read that如果不是“对 x 应用左值到右值的转换会产生一个不调用非平凡函数的常量表达式”,则使用 ODR。我知道第三条语句确实使用了 ODR-x 但第一条和第二条,不完全确定......

关于陈述 1:该陈述不使用 ODR x 是否正确?

关于陈述 2:关于这个特定的陈述,我正在查看上面的标准。右值到左值的转换应用于 x 以满足 + 运算符的要求,但这会产生常量表达式吗?根据我的理解,它确实如此,因为它会产生右值 2,我猜它永远不会改变,因此是常量。所以我觉得很困惑,常量表达式是一个常量表达式,这会使转换的结果成为我所学的常量表达式。问题只是变量 x 不是常量,所以对我来说奇怪的是涉及这个的结果突然是常量 ...

最佳答案

常量表达式 是一个 term of art .

长话短说,如果一个表达式使用了一个变量的值,而这个变量是

  1. 不是引用
  2. 不是constexpr,并且
  3. 不是const整数或枚举

...那么表达式不能是常量表达式。

关于c++ - 非常量表达式的左值到右值转换的结果是常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48036033/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com