Erro de comparação em C: ponteiro vs. número inteiro
Ao tentar compilar uma função simples do livro C de Bjarne Stroustrup, terceira edição, desenvolvedores pode encontrar o erro de tempo de compilação:
error: ISO C forbids comparison between pointer and integer
Esse problema surge ao comparar um ponteiro com um número inteiro. No código fornecido:
#include
#include
using namespace std;
bool accept()
{
cout > answer;
if (answer == "y") return true;
return false;
}
O erro aparece na instrução if onde a resposta é comparada a uma string literal ("y"). Como a resposta é uma variável de caractere, ela deve ser comparada a uma constante de caractere.
Solução
Existem duas soluções para esse problema:
Use uma variável de string:
Declare a resposta como um tipo de string em vez de char. Isso permitirá que você compare a resposta com uma string literal corretamente:
string answer;
if (answer == "y") return true;
Use Character Constant:
Em vez de comparar a resposta a uma string literal, use uma constante de caractere entre aspas simples:
if (answer == 'y') return true; // Note single quotes for character constant
Ambos os métodos resolvem efetivamente o erro, garantindo que a comparação seja entre tipos compatíveis.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3