[C con Clase] Preguntas acerca de el tema 6 de C++

Steven Davidson srd4121 en njit.edu
Sab Oct 22 21:30:14 CEST 2011


Hola StormDead,

2011/10/22 StormDead <support en wowstormdead.com>:
> Hola, primero muchas gracias por este curso de c++.
>

De nada; para esto estamos.

> Recién empiezo y tengo varias preguntas acerca de los ejemplos de
> http://c.conclase.net/curso/index.php?cap=006p#resueltos1_6
>

Veamos la duda.

> En el 5º problema entiendo todo lo que haces pero esto no:
>
>       while(numero >= factor*factor) {
>          if(!(numero % factor)) {
>             cout << factor << " * ";
>             numero = numero / factor;
>             continue;
>
> Eso que esta subrayado, para que lo hace?  No lo entiendo
>

Viendo que la sentencia es 'if', lo que hay entre paréntesis es una
expresión que será evaluada como una condición: verdadera (true) o
falsa (false). La expresión se compone de dos operaciones (bueno, tres
si contamos los paréntesis). La primera operación es:

numero % factor

El operador % indica el módulo o resto de una división. Es decir,
'factor' divide 'numero' una cantidad entera de veces, y obtenemos una
cantidad restante: el resto. Esto implica que obtendremos un número
entero.

La segunda operación ! es la negación lógica (o booleana) que invierte
la veracidad de su operando; esto es, "!true" pasa a ser 'false' y
"!false" pasa a ser 'true'.

El problema es que estamos aplicando el operador ! a un número entero
y no a un valor booleano. Sin embargo, existe una asociación entre
números enteros y booleanos en el lenguaje C/C++. El cero implica
'false' y cualquier otro entero implica 'true'. Por lo tanto, si el
resto no es 0 (cero) entonces implica que no es falso, y por lo tanto,
significa que la condición es verdadera; a su vez, esto implica que
realizaremos las sentencias bajo 'if'. Por otro lado, si el resto es
cualquier entero diferente a 0 (cero), entonces se convierte a
verdadero (true) y al NO ser verdadera la condición, nos saltamos el
apartado de 'if'.

Esto lo explicamos en el capítulo 4:
http://c.conclase.net/curso/index.php?cap=004c#Op_logicasfrec


Espero que esto aclare la duda.

Steven




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