有符号和无符号整数类型具有相同的存储(根据标准至少 16 位)和对齐方式,但它们仍然存在很多差异,在下面的行中,描述有符号和无符号整数之间的一些差异。
有符号整数可以同时存储正值和负值,但在它旁边无符号整数只能存储正值。
有符号整数类型的非负值范围是相应无符号整数类型的子范围。
例如:假设整数的大小为 2 个字节。
有符号整数 -32768 到 +32767
无符号整数 0 到 65535
在计算无符号整数时,它永远不会溢出,因为如果计算结果大于无符号整数类型的最大值,则它会以比结果类型可以表示的最大值大一的数字为模减少。
例如:计算结果%(无符号整数的最大值+1)
有符号整数类型的溢出是未定义的。
如果 Data 是有符号类型的负值,Data 的右移操作是依赖于实现的,但是对于无符号类型,它会是 Data/2pos。
如果 Data 是有符号类型的负值,则 Data 的左移操作显示未定义的行为,但对于无符号类型,它将是 Data x 2pos。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。