为了账号安全,请及时绑定邮箱和手机立即绑定

为什么size_t是无符号的?

为什么size_t是无符号的?

C++
梦里花落0921 2019-11-14 10:53:04
Bjarne Stroustrup用C ++编程语言写道:无符号整数类型是将存储视为位数组的理想选择。使用无符号而不是整数来获得更多的比特来表示正整数几乎不是一个好主意。通过声明无符号变量来确保某些值是正值的尝试通常会被隐式转换规则所破坏。size_t似乎是无符号的,“可以再获得一位代表正整数”。那么这是一个错误(或折衷方案)吗?如果是这样,我们是否应该在自己的代码中尽量减少使用它?Scott Meyers的另一篇相关文章在这里。总之,他建议不要使用unsigned in接口,无论该值是否始终为正。换句话说,即使负值没有意义,也不必使用无符号。
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

size_t是unsigned因为负数大小没有意义。


(摘自评论:)


声明是什么,而不是要确保。您什么时候最后一次看到-1号清单?遵循该逻辑太远,您会发现unsigned根本不应该存在,也不应该允许位操作。– 怪胎


更重要的是:出于您应该考虑的原因,地址未签名。大小是通过比较地址生成的;将地址视为带符号的地址会做很多错误的事情,使用带符号的值作为结果将丢失数据,而您对Stroustrup报价的阅读显然认为可以接受,但实际上不可接受。也许您可以解释一个否定地址应该怎么做。– 怪胎


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 533 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信