ISO C ++ запрещает сравнение между указателем и целым числом [-fpermissive]

Код

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() ?? и что значит эта ошибка ???

добавленной
Алгоритм — это функция, принимающая целочисленный ввод и возвращающая целое число.

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;
}

0

Решение

Вы путаете имя функции с вашей локальной переменной с почти таким же именем:

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

Ваша функция называется cycle_lengthваша переменная называется cycleLength — пока вы используете cycle_length дальше.

Сообщение об ошибке немного странно, потому что компилятор не «сравнивает имена переменных с именами функций, чтобы увидеть, есть ли подобное, а затем предлагает, что, возможно, вы просто ввели его неправильно» — он просто говорит: «Хм, вы сравнивая указатель функции [что вы получаете из имени функции] с целым числом, это не включено! «

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]