请问-1可否定义成无符号数呢?例如unsigned short si = -1;

来源:百度知道 编辑:UC知道 时间:2024/05/30 00:15:32

-1 是个 signed 型的字面值常量,
unsigned short si = -1;
这句话在赋值的时候发生隐式类型转换了。如果没有截断、提升,那么 si 内存中的二进制内容和 -1 一样,但是按照 unsigned short 解释。这和
unsigned short si = 'a';
一个道理。
因此只要你写下 -1 它就是个 signed,至于你赋值给 unsigned 或者 double,都不改变 -1 是 signed 这个事实。

规划

编译器可能会告警导致编译不过去。

但是可以通过
unsigned short si = (unsigned short) -1;
的方法来强制类型转化,不管怎样, 最终的赋值结果为 si = 0xFFFF (65535)