[C con Clase] diferencia entre
Steven Davidson
steven en conclase.net
Mie Jun 27 04:43:48 CEST 2007
Hola Germán,
El pasado 2007-06-27 02:04:48, german escribió:
g> holas , tengo una duda sobre una sintaxis que uso en dev , cuando quiero
g> comparar una parte de un arreglo con una caracter , me acepta solo si
g> coloco ese caracter entre ' pero no acepta si lo hago con " , ejemplo:
g> if(arreglo[1]!=' - ' && arreglo[2]!=' > ') //lo acepta
g> if(arreglo[1]!=" - " && arreglo[2]!=" > ") //no lo acepta y me lanza este
g> error ISO C++ forbids comparison between pointer and integer
g> ¿cual es la difernecia entre ambos?
Veamos. Las comillas singulares sirven para indicar un solo carácter; o sea, un valor de tipo 'char'. Las comillas (normales) sirven para crear una cadena de caracteres literal; esto es, un array de tipo 'char': 'const char *'.
Tal y como has escrito las sentencias, ambas son incorrectas:
1. arreglo[1] != ' - '
Si quieres comparar un carácter, entonces debes usar las comillas singulares rodeando a un solo carácter. Has escrito tres caracteres: espacio - espacio. Escribe:
if( arreglo[1] != '-' && arreglo[2] != '>' )
2. arreglo[1] != " - "
Aquí estás comparando un valor de tipo 'int' con un valor de tipo 'const char *'. Como no existe ninguna regla semántica para la operación != con operandos de estos tipos, ni tampoco existe una conversión implícita de tipos, el compilador te lanza un error. Además, es un error lógico, ya que quieres comparar un elemento con un solo carácter.
Sugiero consultar los capítulos 7 y 8 en nuestro curso de C++. Los enlaces son: http://c.conclase.net/curso/index.php?cap=007#Not_char y http://c.conclase.net/curso/index.php?cap=008
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase