关于c++中的char和bool

起因

今天刷OJ发现一个有意思的事儿。题目中需要计算一定范围内的质数,我申请了一个数组,所有元素有0、1、-1三种状态。如果数组使用int的话用时240ms,36M内存。如果换成char就变成了140ms,9M内存。这就引出了两个问题:1. 为什么变快了;2. char原来是有符号的?

char的符号

这个问题很好解决,Google之后发现C标准中将char规定为Implementation Defined(由实作环境决定)。具体而言,arm平台上char是无符号的,而intel平台上char是有符号的。

如果想验证的话,在自己的平台上给char赋值128,如果是无符号整数那么输出应该还是128,如果是有符号整数那么输出应该是-128。

char的计算

缺乏这方面知识,查完相关资料在补充这段吧。

bool的存储

跟同学的代码进行对比之后我又发现一个问题:他的数组使用的是bool,但内存消耗跟我一样!这说明bool虽然只有0和1两种状态,但在内存中却占用了一个byte而非一个bit。

如果想验证的话,申请一个bool数组,全部赋值为1,然后一个byte一个byte往外读。如果是按bit存储,这个字节内容应该是11111111,如果是按byte存储,应该是00000001。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值