ISO C ++禁止指针和整数之间的比较[-fpermissive]

时间:2013-01-29 17:52:49

标签: c++ iso

守则

int cycle_length(int i, int j) {
    int cycleLength = 0;
    for (int k = i; k <= j; k++) {
        cout << algorithm(k) << endl;
        if (algorithm(k) > cycle_length) {
            cycleLength = algorithm(k);
        }
    }
    return cycleLength;
}

ISO C++ forbids comparison between pointer and integer [-fpermissive]

我在此行if ( algorithm(k) > cycle_length)中收到此错误。

但是,相同的代码是如何在main()中正常工作的?什么是这个错误意味着???

algorithm是一个取整数输入并返回整数的函数。

int algorithm(int number1) {
    int counter = 1, number = number1;
    do {
        if (number % 2 == 0) {
            number = number / 2;
            counter++;
        } else {
            number = (3 * number) + 1;
            counter++;
        }
    } while (number != 1);

    return counter;
}

1 个答案:

答案 0 :(得分:9)

您将函数的名称与几乎相同名称的本地变量混淆:

int cycle_length(int i, int j)
{
    int cycleLength

您的功能称为cycle_length,您的变量称为cycleLength - 但您正在进一步使用cycle_length

错误消息有点奇怪,因为编译器不会“将变量名称与函数名称进行比较以查看是否存在类似的变量名称然后建议您输入错误” - 它只是说“嗯” ,你正在比较一个函数指针[你从一个函数的名字得到的]和一个整数,它不是!“