这个C++代码是否正确?
const size_t tabsize = 50;
int tab[tabsize];
Run Code Online (Sandbox Code Playgroud)
问题是我已经看到了很多关于这件事的相互矛盾的意见.即使是## c ++ IRC频道和节目论坛的人也要求完全不同的东西.
有人说上面的代码是正确的.
其他人认为它不是,它应该是这样的:
constexpr size_t tabsize = 50;
int tab[tabsize];
Run Code Online (Sandbox Code Playgroud)
由于我对"C++专家"的观点存在冲突已经足够困惑,我可以请一个合理的备份答案吗?非常感谢!
我试图运行一个基于的程序constexpr.
码:-
#include <iostream>
using namespace std;
int main()
{
const int i = 10;
constexpr int j = 10;
constexpr int val1 = i;
constexpr int val2 = j;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在我所遵循的书中,提到如果将const分配给constexpr变量,那就是错误.
但我的程序编译没有任何投诉.
我错过了什么吗?
我有一个关于使用const变量作为模板参数的问题。
使用 gcc 和 clang x64 trunk可以很好地编译以下内容:
template <int N>
void func() { }
int main(int argc, char *argv[]) {
const int x = 12;
func<x>();
}
Run Code Online (Sandbox Code Playgroud)
然而,正如人们所预料的那样,这个版本main()无法编译:
int main(int argc, char *argv[]) {
const int x = argc;
func<x>();
}
Run Code Online (Sandbox Code Playgroud)
不应该x被要求吗constexpr?或者,当该值可以在编译时确定时,是const隐式的吗?constexpr
之间有什么区别:
int size = 10000;
Run Code Online (Sandbox Code Playgroud)
和
const int size = 10000;
Run Code Online (Sandbox Code Playgroud)
此代码处理数组,其中size变量名称将作为 进入数组array[size]。
我如何在我的代码中使用它:
int main() {
int size = 50000; // here is where I had const before
int * items;
items = new int [size];
//random array for bubbleSort
for (int i = 0; i < size; i++) {
items[i] = rand();
}
clock_t start, end;
assert((start = clock()) != -1);
sort1(items, size); //bubbleSort
end = clock();
cout << "bubbleSort(random): " << (double)(end - …Run Code Online (Sandbox Code Playgroud)