if statement entero

Creo que esta es una pregunta simple, pero estoy luchando con lo siguiente. en el ejemplo tengo la siguiente statement (el idioma es C):

int foobar if (foobar) { // do something. } 

ahora, si estoy en lo cierto al respecto, esta afirmación es verdadera cuando foobar no es cero. por lo que debería ser bastante similar a si (foobar! = 0);

¿Pero qué pasa si foobar se convierte en un número negativo?

negativo o positivo Cualquier cosa que no sea un 0 es un verdadero valor en if

Además, considere un número negativo: -1

-1 en C internamente se representa como: 0xFFFFFFFF , en cuyo caso, sería un número positivo si lo 0xFFFFFFFF a un entero sin signo.

Pero después de la llegada de los comstackdores estándar C99, sugiero que use lugar. Hace que el trabajo de adivinar sea mucho menos:

Lea aquí acerca de stdbool.h

mismo, el

 if (foobar) 

significa que foobar no es cero, por lo que si es positivo o negativo no importa, todavía no es cero

Su statement debe devolver verdadero si foobar es un número negativo (aún así es diferente de cero) pero debe evitar ese tipo de prueba ya que no es la mejor práctica probar variables que pueden tener diferentes valores “verdaderos” de esa manera.