Duda en C

WiLcO

Tengo una pequeña dudilla y necesito que alguien me heche una mano:

int busqueda_binaria(int *vector,int valor)
{


int encontrado;  
int centro;
int izquierda;
int derecha;

encontrado = 0;
izquierda = 0;
derecha = 19;

while (! encontrado && izquierda <= derecha)
{
	centro = (izquierda + derecha) / 2;
	if (valor < vector[centro])
	{
		derecha = centro - 1;
	}
	else 
	{	
	
		if (valor > vector[centro])
		{
			izquierda = centro + 1;
		}
		else
		{
			encontrado = 1;
		}
  
	}
}

return centro;

Alguien sabe lo que significa el signo de exclamacion que tiene el bucle while? Me refiero a este el que esta justo despues del primer parentesis.

while (! encontrado && izquierda <= derecha)

Gracias

Deoxys

es una negación, como la de no igual (!=):

while (no encontrado, etc, etc)

B

es el simbolo de negación. Mientras encontrado sea 0 bla bla bla. Si encontrado=0 al negarlo da 1 y continua mirando el and(&& )

pakuko

http://encycode.com/wiki/index.php/C_Cheat_Sheet

ZeNiT2

Significa falso

Amazon

Esa admiración niega la expresión que le sigue, así pues, niega "encontrado".

Al principio encontrado es 0, por lo que al negarlo dará 1, y seguirá entrando en el bucle mientras encontrado valga 0 Y lo de la derecha sea verdad, al cambiar encontrado a 1, al negarlo dará 0 y saldrá de dicho bucle por no cumplirse esa condición.

Vamos que
"!0" es como si pusieras 1, y "!(random numero que no sea 0)" es como si pusieras 0.

NeB1

Estaba mirando el código y pensando que iba a ser una pregunta ultra-complicada sobre algoritmos de búsqueda y tal, y ya estaba resignado a no contestar cuando de repente leo lo que preguntas xDD.

"Pedro tiene 30 años, su hijo tiene una octava parte la suma de la edad de Pedro con la de su madre, la cual tiene la misma edad que Pedro cuando su hijo solo tenía una cuarta parte de su edad.

¿Como se llama Pedro?"

Jajajaja, no quiero reirme de tí en cuanto a eso, que todos empezamos con algo, simplemente es que me ha dejado roto xD

Usuarios habituales