Si ... se explica otra declaración en C

El flujo de código condicional es la capacidad de cambiar la forma en que se comporta un fragmento de código en función de ciertas condiciones. En tales situaciones, puede utilizar ifdeclaraciones.

La ifdeclaración también se conoce como declaración de toma de decisiones, ya que toma una decisión sobre la base de una condición o expresión determinada. El bloque de código dentro de la ifdeclaración se ejecuta y la condición se evalúa como verdadera. Sin embargo, el código dentro de las llaves se omite si la condición se evalúa como falsa y ifse ejecuta el código después de la declaración.

Sintaxis de una ifdeclaración

if (testCondition) { // statements }

Un simple ejemplo

Veamos un ejemplo de esto en acción:

#include  #include  int main(void) { if(true) { printf("Statement is True!\n"); } return 0; }

Salida:

Statement is True!

Si el código entre paréntesis de la ifdeclaración es verdadero, se ejecuta todo lo que está entre las llaves. En este caso, se trueevalúa como verdadero, por lo que el código ejecuta la printffunción.

if..else declaraciones

En una if...elsedeclaración, si el código entre paréntesis de la ifdeclaración es verdadero, se ejecuta el código entre paréntesis. Pero si la declaración dentro del paréntesis es falsa, todo el código dentro de los elsecorchetes de la declaración se ejecuta en su lugar.

Por supuesto, el ejemplo anterior no es muy útil en este caso porque truesiempre se evalúa como verdadero. Aquí hay otro que es un poco más práctico:

#include  int main(void) { int n = 2; if(n == 3) { // comparing n with 3 printf("Statement is True!\n"); } else { // if the first condition is not true, come to this block of code printf("Statement is False!\n"); } return 0; }

Salida:

Statement is False!

Aquí hay algunas diferencias importantes. Primero, stdbool.hno se ha incluido. Eso está bien porque truey falseno se están usando como en el primer ejemplo. En C, como en otros lenguajes de programación, puede usar declaraciones que evalúen como verdadero o falso en lugar de usar los valores booleanos trueo falsedirectamente.

Observe también la condición en el paréntesis de la ifdeclaración: n == 3. Esta condición compara ny el número 3. ==es el operador de comparación, y es una de varias operaciones de comparación en C.

Anidado if...else

La if...elsedeclaración permite elegir entre dos posibilidades. Pero a veces es necesario elegir entre tres o más posibilidades.

Por ejemplo, la función de signo en matemáticas devuelve -1 si el argumento es menor que cero, +1 si el argumento es mayor que cero y devuelve cero si el argumento es cero.

El siguiente código implementa esta función:

if (x < 0) sign = -1; else if (x == 0) sign = 0; else sign = 1;

Como puede ver, una segunda if...elsedeclaración está anidada dentro de la elsedeclaración de la primera if..else.

Si xes menor que 0, entonces signse establece en -1. Sin embargo, si xno es menor que 0, if...elsese ejecuta la segunda instrucción. Allí, si xes igual a 0, signtambién se establece en 0. Pero si xes mayor que 0, en signcambio , se establece en 1.

En lugar de una if...elsedeclaración anidada , los principiantes suelen utilizar una serie de ifdeclaraciones:

if (x  0) { sign = 1; }

Si bien esto funciona, no se recomienda ya que no está claro que solo una de las instrucciones de asignación ( sign = ...) esté destinada a ejecutarse según el valor de x. También es ineficiente: cada vez que se ejecuta el código, se prueban las tres condiciones, incluso si una o dos no tienen que ser así.

más ... si declaraciones

if...elseLas declaraciones son una alternativa a una serie de ifdeclaraciones. Considera lo siguiente:

#include  int main(void) { int n = 5; if(n == 5) { printf("n is equal to 5!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Salida:

n is equal to 5!

Si la condición de la ifdeclaración se evalúa como falsa, else...ifse verifica la condición de la declaración. Si esa condición se evalúa como verdadera, else...ifse ejecuta el código dentro de las llaves de la declaración.

Operadores de comparación

Nombre del operadorUsoResultado
Igual aa == bVerdadero si aes igual a b, falso en caso contrario
No igual aa != bVerdadero si ano es igual a b, falso en caso contrario
Mas grande quea > bVerdadero si aes mayor que b, falso en caso contrario
Mayor qué o igual aa >= bVerdadero si aes mayor o igual que b, falso en caso contrario
Menos quea < bVerdadero si aes menor que b, falso en caso contrario
Menos que o igual aa <= bVerdadero si aes menor o igual que b, falso en caso contrario

Operadores logicos

Es posible que deseemos que se ejecute un poco de código si algo no es cierto o si dos cosas son ciertas. Para eso tenemos operadores lógicos:

Nombre del operadorUsoResultado
No ( !)!(a == 3)Verdadero si noa es igual a 3
Y ( &&)a == 3 && b == 6Verdadero si aes igual a 3 yb es igual a 6
O ( ||)a == 2 || b == 4True if a is equal to 2 orb is equal to 4

For example:

#include  int main(void) { int n = 5; int m = 10; if(n > m || n == 15) { printf("Either n is greater than m, or n is equal to 15\n"); } else if( n == 5 && m == 10 ) { printf("n is equal to 5 and m is equal to 10!\n"); } else if ( !(n == 6)) { printf("It is not true that n is equal to 6!\n"); } else if (n > 5) { printf("n is greater than 5!\n"); } return 0; }

Output:

n is equal to 5 and m is equal to 10!

An important note about C comparisons

While we mentioned earlier that each comparison is checking if something is true or false, but that's only half true. C is very light and close to the hardware it's running on. With hardware it's easy to check if something is 0 or false, but anything else is much more difficult.

Instead it's much more accurate to say that the comparisons are really checking if something is 0 / false, or if it is any other value.

For example, his if statement is true and valid:

if(12452) { printf("This is true!\n") }

By design, 0 is false, and by convention, 1 is true. In fact, here’s a look at the stdbool.h library:

#define false 0 #define true 1

While there's a bit more to it, this is the core of how booleans work and how the library operates. These two lines instruct the compiler to replace the word false with 0, and true with 1.