Error de comparación en C: puntero frente a entero
Al intentar compilar una función simple del libro C de Bjarne Stroustrup, tercera edición, desarrolladores puede encontrar el error de tiempo de compilación:
error: ISO C forbids comparison between pointer and integer
Este problema surge al comparar un puntero con un número entero. En el código proporcionado:
#include
#include
using namespace std;
bool accept()
{
cout > answer;
if (answer == "y") return true;
return false;
}
El error aparece en la declaración if donde la respuesta se compara con una cadena literal ("y"). Dado que la respuesta es una variable de carácter, se debe comparar con una constante de carácter.
Solución
Hay dos soluciones para este problema:
Utilice una variable de cadena:
Declare la respuesta como un tipo de cadena en lugar de char. Esto le permitirá comparar la respuesta con un literal de cadena correctamente:
string answer;
if (answer == "y") return true;
Usar carácter constante:
En lugar de comparar la respuesta con una cadena literal, use un carácter constante entre comillas simples:
if (answer == 'y') return true; // Note single quotes for character constant
Ambos métodos resuelven eficazmente el error al garantizar que la comparación se realice entre tipos compatibles.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3