相关疑难解决方法(0)

const vs constexpr关于变量

以下定义之间有区别吗?

const     double PI = 3.141592653589793;
constexpr double PI = 3.141592653589793;
Run Code Online (Sandbox Code Playgroud)

如果没有,在C++ 11中首选哪种风格?

c++ variables const constexpr c++11

275
推荐指数
5
解决办法
9万
查看次数

使用const初始化constexpr, - int vs float

我想知道为什么整数ii在编译时初始化,但不是浮点数ff:

int main() {
  const int i = 1;
  constexpr int ii = i;

  const float f = 1.0;
  constexpr float ff = f;
 }
Run Code Online (Sandbox Code Playgroud)

这是我尝试编译时会发生的事情:

> g++ -std=c++11 test.cc
test.cc: In function ‘int main()’:
test.cc:6:24: error: the value of ‘f’ is not usable in a constant expression
   constexpr float ff = f;
                        ^
test.cc:5:15: note: ‘f’ was not declared ‘constexpr’
   const float f = 1.0;
Run Code Online (Sandbox Code Playgroud)

c++ constexpr

23
推荐指数
2
解决办法
2205
查看次数

可以使用可更改的 const 变量在 C 和 C++ 中声明和定义数组吗?

看下面的代码:

#include <iostream>
int main(void) {
    int  number1 = 4;
    double salary[number1];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

虽然可以成功编译,但应该认为是错误的,因为 number1 是非 const 变量。

#include <iostream>

int main(void) {
    int  number1 = 4;

    const unsigned number2 = number1;
    double salary[number2];

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在 number2 是一个常量变量。

也编译成功。

我觉得这是错误的,或者至少不是好的做法。

但我无法解释为什么。

有人可以解释为什么它是错误的吗?

c c++ arrays constants

1
推荐指数
1
解决办法
115
查看次数

标签 统计

c++ ×3

constexpr ×2

arrays ×1

c ×1

c++11 ×1

const ×1

constants ×1

variables ×1