c++ - 数组相关错误 - 无效类型..?

标签 c++ arrays

我正在制作一个与数组相关的简单程序。我的代码:

#include <iostream>
#include <cmath>
using namespace std;

int main() {
int a;
cout << "Please enter the length of the array: " << endl;
cin >> a;
bool array[a];

for (int n = 0; n < a; n++) {
    array[n] = true;

}
array[0] = false;
array[1] = false;
for (int k = 2; k < a; k++) {
        if (array[k] == true){

    for (int i = 0; pow(k,2)+ i*k < a; i++) {
        array[ pow(k,2) + i * k] = false;

             }
        }

}

    for (int j = 0 ; j < a ; j++){
        if (array[j] == true){
        cout << j <<endl;
        }
    }

我在行中得到一个错误

array[ pow(k,2) + i * k] = false;

它说

"Invalid Types"
||=== Build: Debug in Test (compiler: GNU GCC Compiler) ===|
C:\Users\Momo\Documents\CodeBlocks Projects\Test\main.cpp||In function 'int main()':|
C:\Users\Momo\Documents\CodeBlocks Projects\Test\main.cpp|21|error: invalid types 'bool [(((sizetype)(((ssizetype)a) + -1)) + 1)][__gnu_cxx::__promote_2<int, int, double, double>::__type {aka double}]' for array subscript|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

这就是错误。我正在尝试从 Java 切换到 C++。然而,这种错误对我来说是新的,因为我从未在 Java 中遇到过这种错误。 你们能帮我理解这是什么意思吗?我能做些什么来解决它? 谢谢。

最佳答案

使用 man pow ,您可以得到以下内容:

  double pow(double x, double y);

据此我们知道 pow() 返回 double。但是数组下标必须是一个 size_t 变量。所以您可以将该行更改为:

array[ static_cast<size_t>(pow(k,2)) + i * k] = false;

关于c++ - 数组相关错误 - 无效类型..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35238492/

相关文章:

python - Armadillo /MKL/其他? C++ 中的插值相当于 Scipy 插值

javascript - jQuery.each - 如何遍历 JSON 对象元素?

java - 仅显示 List<Map<String, List<String>>> 中的 map 键

char 数组可以用于任何数据类型吗?

c++ - 从文件中逐个字符地读取单词列表并将它们存储在数组中

c++ - test.c :(. text+0x36): 未定义对 `md5_file' 的引用

c++ - 将 QTemporaryFile 与 QProcess 一起使用是否安全?

使用 CMake 和 Ryppl 的 C++ 库生态系统

C++禁止覆盖虚函数

php - 如何抓取、排序和显示热门评论者 (PHP/MySQL)?