https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2763.pdf "There is one crucial exception to the C rules for integer promotion: _BitInt types are excepted from the integer promotions." I find this really interesting, finally there's a way to opt-out from integer promotions in C. You could even create new aliases for 16- and 32-bit types that then avoids the legacy rules.