Ayuda con simple "Negacion logica"

stickylife

Bovino adicto
#1
hola amigos, estoy aprendiendo c++ y estoy teniendo un pequeño problema con este ejercicio:

int x = 7;
bool found = false;

do
{
cout << x << " ";
if (x <= 2)
found = true;
else
x = x - 5;

} while (x > 0 && !found);
cout << endl;

return 0;


Para mi el resultado es 7 pero la realidad es que el resultado o output es 7 2.

que alguien me explique la parte del while, ¿porque la primera que se ejecuta el do while el while devuelve "true" si 2 > 0(true) && !found (false)entonce debería de ser "False" y terminar con el loop?
ojala entiendan mi duda.
 

jlrmdevil

Bovino maduro
#2
Hmmmm... no se que libro conseguiste o que objetivo persigues con el programa... pero la primera vuelta del do-while, se ejecuta por que se ejecuta.(aqui no hay bronca)... antes de iniciar la segunda vuelta ve si la condición se cumple 2>0 (true), bool como tu mencionas es false pero hay un pequeño e insignificante "!" antes del found lo cual "niega" la siguiente sentencia lo que se traduce en que tu false se vuelve true (traduciendo al indio de alto nivel seria si x es mayor a cero y no lo he encontrado), como ambos son true se repite el ciclo.
 
Arriba