«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как исправить ошибку сравнения указателя и целого числа в C++

Как исправить ошибку сравнения указателя и целого числа в C++

Опубликовано 18 ноября 2024 г.
Просматривать:819

How to Fix Comparison Error Between Pointer and Integer in C

Ошибка сравнения в 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"). Поскольку ответ является символьной переменной, ее необходимо сравнить с символьной константой.

Решение

Существует два решения этой проблемы:

  1. Использовать строковую переменную:
    Объявить ответ как строковый тип вместо символа. Это позволит вам правильно сравнить ответ со строковым литералом:

    string answer;
    if (answer == "y") return true;
  2. Используйте символьную константу:
    Вместо сравнения ответа со строковым литералом используйте символьную константу заключенные в одинарные кавычки:

    if (answer == 'y') return true; // Note single quotes for character constant

Оба метода эффективно устраняют ошибку, гарантируя, что сравнение происходит между совместимыми типами.

Заявление о выпуске Эта статья перепечатана по адресу: 1729663819. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3