martes, 21 de mayo de 2013

Resultado de Programa


Y el resultado de ejecutar este programa es como sigue:
[cauldron:03xx_PROGS]> ./a.out


Funciones de comparación de cadenas

nombre_uno = Alicante
nombre_dos = Barcelona
nombre_tres = Barcelona


nombre_uno == nombre_dos = 0
Esto tiene sentido porque 0xbffffc00 != 0xbffffc10


nombre_uno == nombre_tres = 0
Esto tiene sentido porque 0xbffffc00 != 0xbffffc20


nombre_dos == nombre_tres = 0
Esto tiene sentido porque 0xbffffc10 != 0xbffffc20


strcmp(nombre_uno, nombre_dos) = -1
strcmp(nombre_uno, nombre_tres) = -1
strcmp(nombre_dos, nombre_tres) = 0
[cauldron:03xx_PROGS]>

 Los especificadores de formato
"%d", "%s" y "%p" están descritos en la sección oportuna la describiremos mas adelante. Los resultados de aplicar el operador de comparación "==" a una pareja de cadenas son los que se obtienen al comparar numéricamente las direcciones de comienzo de los operandos (las dos cadenas). Como nombre_uno, nombre_dos y nombre_tres son variables distintas, tienen direcciones de comienzo distintas; aunque su contenido sea el mismo, como es el caso de nombre_dos y nombre_tres, su dirección es diferente, y la comparación mediante "==" produce un resultado falso, porque las direcciones no son iguales.
Cuando se hace uso de la función
strcmp(), se obtiene un resultado más acorde con lo esperable. En efecto, esta función (véanse los resultados de escribir "man strcmp" en una shell) produce un resultado negativo, nulo o positivo según la primera cadena sea menor, igual o mayor que la segunda, desde un punto de vista lexicográfico. En nuestro caso, "Alicante" es menor que "Barcelona", luego el resultado de esa comparación es -1. Cuando se comparan nombre_dos y nombre_tres, el resultado es 0, porque son iguales.

No hay comentarios:

Publicar un comentario