Ошибка сравнения в C: указатель против целого числа
При попытке скомпилировать простую функцию из книги Бьярна Страуструпа по C, третье издание, разработчики может возникнуть ошибка времени компиляции:
error: ISO C forbids comparison between pointer and integer
Эта проблема возникает при сравнении указателя с целым числом. В предоставленном коде:
#include
#include
using namespace std;
bool accept()
{
cout > answer;
if (answer == "y") return true;
return false;
}
Ошибка появляется в операторе if, где ответ сравнивается со строковым литералом ("y"). Поскольку ответ является символьной переменной, ее необходимо сравнить с символьной константой.
Решение
Существует два решения этой проблемы:
Использовать строковую переменную:
Объявить ответ как строковый тип вместо символа. Это позволит вам правильно сравнить ответ со строковым литералом:
string answer;
if (answer == "y") return true;
Используйте символьную константу:
Вместо сравнения ответа со строковым литералом используйте символьную константу заключенные в одинарные кавычки:
if (answer == 'y') return true; // Note single quotes for character constant
Оба метода эффективно устраняют ошибку, гарантируя, что сравнение происходит между совместимыми типами.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3