Что происходит при переполнении целочисленного типа в Swift?

«Что происходит при переполнении целочисленного типа в Swift?» — вопрос из категории Swift Core, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

По умолчанию 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++

Важно: Для большинства приложений стандартные операторы безопаснее, так как предотвращают случайные переполнения.