[C con Clase] Ayuda con Punteros y Arrays

Steven Davidson steven en conclase.net
Dom Ene 21 05:39:07 CET 2007


Hola David,

El pasado 2007-01-21 03:23:17, David Reza escribió:

DR> Bien, ya tuve oportunidad de probarlo y quedó muy bien. Sólo me surgió la
DR> duda de por qué hay que poner el signo de admiración dentro de la condición
DR> del if:
DR> if(!strcmp(j, k))
DR> Podrías explicarme?

El operador ! realiza la operación NOT o negativa booleana. Esto implica que cualquier operando booleano será invertido. Esto es,

 A | NOT A
---+-------
 V |   F
 F |   V

Sugiero consultar el capítulo 4 del curso de C++. Puedes ir directamente a: http://c.conclase.net/curso/index.php?cap=004c#Op_logicos


La función 'strcmp()' retorna uno de tres posibles valores:
< 0, si la primera cadena es "menor" que la segunda;
= 0, si ambas cadenas son iguales;
> 0, si la primera cadena es "mayor" que la segunda;

En lugar de comprobar si el valor retornado por 'strcmp()' es == 0; es decir, hacer lo siguiente:

if( strcmp(j, k) == 0 )

Lo que hacemos es comprobar si no es 0 (cero). Recuerda que 0, en una expresión condicional, indica "falso", mientras que cualquier otro valor entero indica "verdadero".

En resumen, o bien escribimos:
if( strcmp(j, k) == 0 )

o bien escribimos:
if( !strcmp(j, k) )


Espero haber aclarado la duda.

Steven


Más información sobre la lista de distribución Cconclase