[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