为什么不应该使用整数文字?

Tre*_*key 0 c++ types literals language-lawyer c++11

根据cppreference,
以下语句将是无效的C++:

unsigned short test = 5u;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

为什么使用后缀uU不允许使用unsigned short?
代码仍然编译,但这样做有什么后果吗?

Yak*_*ont 5

5u不是类型unsigned short,但这并不意味着unsigned short test = 5u;"非法".

通常的转换发生.由于所有unsigned ints的模2^n的一些n,这只是截断右手边"逐位"的值.只要rhs值适合短期,就什么都不会发生; 如果不是,则采用"低位".

我在引号中谈到"位",因为2^n对于n标准下的某些值,它实际上是数学模数.这与位相同,但不要求C++环境使用明显的布局实际实现它.