Desbordamiento: + frente a +% y +|
Aritmética con trapping, wrapping y saturación.
Desbordamiento: + frente a +% y +| es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.
Los números tienen límites
Cada entero de tamaño definido tiene un máximo que puede almacenar. Si lo supera, se produce un desbordamiento: el momento en que un valor intenta crecer más allá de su rango.
Zig detecta el desbordamiento
De forma predeterminada, el operador + normal detiene la ejecución cuando se produce un desbordamiento. En una compilación segura, superar el límite detiene el programa en lugar de corromper el valor.
var x: u8 = 255;
x = x + 1; // panics: overflowPor qué es útil detenerse ante un desbordamiento
Un fallo evidente es mejor que una respuesta incorrecta silenciosa. Detener la ejecución convierte un error escurridizo en un fallo claro que puede encontrar y corregir rápidamente.
Aritmética envolvente con +%
A veces querrá que el valor vuelva al principio de forma intencionada. El operador +% produce un desbordamiento envolvente, por lo que 255 + 1 en un u8 se convierte en 0.
var x: u8 = 255;
x = x +% 1; // 0Cuándo es adecuada la aritmética envolvente
La aritmética envolvente resulta ideal para contadores, hashes y sumas de comprobación en los que volver al principio es el comportamiento previsto. Se solicita con el sufijo %, nunca por accidente.
Aritmética saturada con +|
El operador +| limita el resultado al máximo en lugar de producir un desbordamiento envolvente. Un u8 en 255 permanece en 255, lo que resulta perfecto para valores que no deben superar un límite.
var x: u8 = 255;
x = x +| 1; // 255Tres opciones, una decisión
Por tanto, + detiene la ejecución ante un desbordamiento, +% produce un desbordamiento envolvente y +| satura el resultado. Elija el comportamiento que corresponda a su intención para hacer explícito el tratamiento del desbordamiento en el código.
El mismo trío para la resta
Estos sufijos no son solo para la suma. -, -% y -| proporcionan resta con detección, envolvente y saturada exactamente de la misma manera.
var x: u8 = 0;
x = x -| 1; // 0Y también para la multiplicación
La multiplicación sigue el mismo patrón: *, *% y *|. La regla única —elegir el comportamiento ante el desbordamiento— se aplica a todos los operadores aritméticos.
const big = a *% b; // wrap on overflowLas compilaciones predeterminadas siguen siendo seguras
En los modos Debug y ReleaseSafe, los operadores normales comprueban si hay desbordamiento. Solo debe renunciar a esta protección cuando tenga un motivo real para usar una operación envolvente o saturada.
La intención queda reflejada en el código
Como cada comportamiento tiene su propio símbolo, quien lee el código ve de inmediato su intención respecto al desbordamiento. No se da nada por supuesto: el operador lo deja claro.
Comprobación rápida
Quiere que un contador u8 vuelva de 255 a 0. ¿Qué operador debe usar?
Resumen: elija cómo tratar el desbordamiento
La aritmética normal detiene la ejecución, el sufijo % produce un desbordamiento envolvente y el sufijo | satura el resultado. Elija de forma deliberada y el desbordamiento nunca será una sorpresa oculta. 🛡️
Preguntas frecuentes
¿La lección «Desbordamiento: + frente a +% y +|» es gratis?
Sí — el texto completo de «Desbordamiento: + frente a +% y +|» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Desbordamiento: + frente a +% y +|»?
Aritmética con trapping, wrapping y saturación. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Zig Academy?
No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Desbordamiento: + frente a +% y +|»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Zig Academy?
Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Operadores aritméticos y de comparación
- Desbordamiento: + frente a +% y +|
- Operadores bit a bit
- Lógica booleana y evaluación de cortocircuito