fix logic

This commit is contained in:
Dmis
2021-01-24 23:39:08 +03:00
parent 425389c9ef
commit 3c1d2a51d4

View File

@@ -188,7 +188,7 @@ static_assert(IntegerPromotionUB(65535) == 1); // won't compile
```
Несмотря на то что для беззнаковых переполнение определено как взятие остатка по модулю `2^n` и мы используем только беззнаковую переменную,
из-за `integer promotion` в этом [примере](https://godbolt.org/z/GWsaGo) возникает переполнение знакового! числа и вытекающее из этого UB на платформах, где размер `int` больше `uint16_t` (то есть почти везде сегодня).
из-за `integer promotion` в этом [примере](https://godbolt.org/z/GWsaGo) возникает переполнение знакового! числа и вытекающее из этого UB. Справедливости ради, надо заметить, что такое происходит только на платформах, где размер `int` больше `uint16_t` (то есть практически везде в наши дни).
```C++
x *= x; // переписывается как x = x * x;