[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