Condiciones anidadas

        Otra solución posible en este caso es poner un if anidado. Anidado quiere decir que escribimos un if dentro de otro if. De esta manera podemos comprobar también una  (o varias) condiciones adicionales no excluyentes de la primera:

better_score_error_2.zig

const std = @import("std");

const print = std.debug.print;

pub fn main() void {

   const n_record = 1200;

   const n_score = 5000;

   const n_maximum_score = 4000;

   if (n_record < n_score) {

      print("Tu puntuación {} es mejor que el récord ( {} )\n", .{ n_score, n_record });

      if (n_score > n_maximum_score) {

          print("Tu puntuación {} es imposible.\n¡Has hecho trampas!\n", .{n_score});

      }

   } 

}

$ zig run better_score_error_2.zig

Tu puntuación 5000 es mejor que el récord ( 1200 )

Tu puntuación 5000 es imposible.

¡Has hecho trampas!

Podemos anidar tantos if, if/else, o if/else if como queramos pero no es una práctica recomendable. Es muy fácil crear auténticos “monstruos de código” con demasiadas condiciones anidadas.

Para crear y mantener el código limpio podemos:

Si lo que queremos  es comprobar varias condiciones en una sola expresión booleana,  podemos usar operadores booleanos:

Tabla de operadores booleanos en Zig

and

Y lógico

verdadero sólo si todas las condiciones lo son

true and false = false

or

O lógico

verdadero si una de las condiciones lo es

true or false = true

xor

O exclusivo

verdadero si una de las condiciones es verdad, pero no ambas

true xor true = false

true xor false = true

!

Negación (NOT)

invierte el valor lógico

!true = false

!false = true

Los operadores que más se suelen usar para combinar expresiones booleanas suelen ser and, or y !

Al igual que en matemáticas, las operaciones que están entre paréntesis tienen prioridad. Veamos un ejemplo paso a paso:

true and !(true or false)  =

true and !(true) =

true and false =

false

If / Else if / Else
If / else que devuelven valores
© 2025 Zen of Zig