Рассмотрим сложение двух чисел:
const std = @import("std");
pub fn main() void {
// Сложение и вычитание целых чисел
std.debug.print("Сумма чисел равна {d}\n", .{2 + 2});
std.debug.print("Разность чисел равна {d}\n", .{2 - 2});
}
Zig Playground Во время работы программы происходит сложение и вычитание двух чисел, результаты вставляются в текстовый шаблон и выводятся на консоль.
Более сложные вычисления — умножение и деление — также выполняются без сложностей:
const std = @import("std");
pub fn main() void {
// Умножение и деление целых чисел
std.debug.print("Произведение чисел равно {d}\n", .{2 * 2});
std.debug.print("Частное чисел равно {d}\n", .{2 / 2});
}
Попробуйте закомментировать деление на 0
— компилятор Zig проверит код и не позволит программе скомпилироваться с этой ошибкой. Это помогает избежать неожиданных ошибок, но будьте внимательны, так как при работе с переменными вы можете случайно создать ситуацию деления на ноль.
Язык Zig поддерживает основные математические операции над числами: сложение, вычитание, умножение и деление. Также доступно вычисление остатка от деления %
. Порядок выполнения операций можно изменять с помощью круглых скобок.
Рассмотрим пример работы этих математических операций в различных комбинациях:
const std = @import("std");
pub fn main() void {
std.debug.print("{d}\n", .{2 + 2 - 2 * 2 / 2 % 2});
std.debug.print("{d}\n", .{(2 + 2) - 2 * 2 / 2 % 2});
std.debug.print("{d}\n", .{2 + (2 - 2) - 2 / 2 % 2});
std.debug.print("{d}\n", .{2 + 2 - 2 * (2 / 2) % 2});
// эта строка вызывает деление на 0 и будет ошибкой компиляции
// std.debug.print("{d}\n", .{2 + 2 - 2 * 2 / (2 % 2)}); // Ошибка компиляции
}
Компилятор Zig обнаруживает попытку деления на ноль и не позволяет скомпилировать код, предотвращая возникновение ошибок во время выполнения программы.
Рассмотрим использование математических операций при работе с дробными числами:
const std = @import("std");
pub fn main() void {
std.debug.print("Сумма:\n", .{});
std.debug.print("{:.}\n", .{0.1 + 0.1});
std.debug.print("{:.}\n", .{0.1 + 0.2});
std.debug.print("{:.}\n", .{0.1 + 0.3});
std.debug.print("{:.}\n", .{0.1 + 0.4});
std.debug.print("{:.}\n", .{0.1 + 0.5});
std.debug.print("{:.}\n", .{0.1 + 0.6});
std.debug.print("{:.}\n", .{0.1 + 0.7});
std.debug.print("{:.}\n", .{0.1 + 0.8});
std.debug.print("{:.}\n", .{0.1 + 0.9});
std.debug.print("Разность:\n", .{});
std.debug.print("{:.}\n", .{0.1 - 0.1});
std.debug.print("{:.}\n", .{0.1 - 0.2});
std.debug.print("{:.}\n", .{0.1 - 0.3});
std.debug.print("{:.}\n", .{0.1 - 0.4});
std.debug.print("{:.}\n", .{0.1 - 0.5});
std.debug.print("{:.}\n", .{0.1 - 0.6});
std.debug.print("{:.}\n", .{0.1 - 0.7});
std.debug.print("{:.}\n", .{0.1 - 0.8});
std.debug.print("{:.}\n", .{0.1 - 0.9});
std.debug.print("Умножение:\n", .{});
std.debug.print("{:.}\n", .{0.1 * 0.1});
std.debug.print("{:.}\n", .{0.1 * 0.2});
std.debug.print("{:.}\n", .{0.1 * 0.3});
std.debug.print("{:.}\n", .{0.1 * 0.4});
std.debug.print("{:.}\n", .{0.1 * 0.5});
std.debug.print("{:.}\n", .{0.1 * 0.6});
std.debug.print("{:.}\n", .{0.1 * 0.7});
std.debug.print("{:.}\n", .{0.1 * 0.8});
std.debug.print("{:.}\n", .{0.1 * 0.9});
std.debug.print("Деление:\n", .{});
std.debug.print("{:.}\n", .{0.1 / 0.1});
std.debug.print("{:.}\n", .{0.1 / 0.2});
std.debug.print("{:.}\n", .{0.1 / 0.3});
std.debug.print("{:.}\n", .{0.1 / 0.4});
std.debug.print("{:.}\n", .{0.1 / 0.5});
std.debug.print("{:.}\n", .{0.1 / 0.6});
std.debug.print("{:.}\n", .{0.1 / 0.7});
std.debug.print("{:.}\n", .{0.1 / 0.8});
std.debug.print("{:.}\n", .{0.1 / 0.9});
std.debug.print("Остаток от деления:\n", .{});
std.debug.print("{:.}\n", .{0.1 % 0.1});
std.debug.print("{:.}\n", .{0.1 % 0.2});
std.debug.print("{:.}\n", .{0.1 % 0.3});
std.debug.print("{:.}\n", .{0.1 % 0.4});
std.debug.print("{:.}\n", .{0.1 % 0.5});
std.debug.print("{:.}\n", .{0.1 % 0.6});
std.debug.print("{:.}\n", .{0.1 % 0.7});
std.debug.print("{:.}\n", .{0.1 % 0.8});
std.debug.print("{:.}\n", .{0.1 % 0.9});
}
В языке Zig поддерживается работа с дробными числами, включая сложение, вычитание, умножение, деление и вычисление остатка.