Ответ
По умолчанию Swift не допускает переполнение целочисленных типов и вызывает runtime-ошибку (crash). Это поведение безопасности.
Пример ошибки:
var maxInt8: Int8 = 127
maxInt8 += 1 // Ошибка выполнения: Arithmetic overflow
Для явного разрешения переполнения Swift предоставляет операторы с амперсандом (&):
&+— сложение с разрешённым переполнением&-— вычитание с разрешённым переполнением&*— умножение с разрешённым переполнением
Пример с переполнением:
var value: Int8 = 127
value = value &+ 1 // -128 (wrap-around)
var unsigned: UInt8 = 255
unsigned = unsigned &+ 1 // 0 (wrap-around)
Практическое применение:
- Криптографические вычисления
- Низкоуровневая работа с битами
- Эмуляция поведения C/C++
Важно: Для большинства приложений стандартные операторы безопаснее, так как предотвращают случайные переполнения.