关注C++细节——使用内置算术类型
C++中整型数有点令人迷惑不解。就像C语言一样,C++被设计成允许程序在必要的时候直接处理硬件,因此整型被定义成满足各种各样硬件的特性。大多数程序员可以(应该)通过限制实际使用的类型来忽略这些复杂性。
实际上,许多人用整型进行计数。例如:程序经常计算像vector或数组这种数据结构的元素的个数。其实标准库定义了一组类型用于统计对象的大小。因此,当计数这些元素时使用标准库定义的类型总是正确的。其他情况下,使用unsigned类型比较明智,可以避免值越界导致结果为负数的可能性。
当执行整型算术运算时,很少使用short类型。大多数程序中,使用short类型可能会隐含赋值越界的错误。这个错误会产生什么后果将取决所使用的机器。比较典型的情况是值“截断”以至于因越界而变成很大的负数。同样的道理,虽然char类型是整型,但是char类型通常用来存储字符而不用于计算。事实上,在某些实现中char类型被当作signed类型,在另外一些实现中则被当作unsigned类型,因此把char类型作为计算类型使用时容易出问题。
在大多数计算技上,使用int类型进行整型计算不易出错。就技术上而言,int类型用16位表示——这对大多数应用来说太小了。实际应用中,大多数通用机器都是使用和long类型一样长的32位来表示int类型。整型运算时,用32位表示int类型和用64位表示long类型的机器会出现应该选择int类型还是long类型的难题题(当然这对ACMer来说并不是什么难题可以瞬间判断)。在这些机器上,用long类型进行计算所付出的运行时代价远远高于int类型进行同样运算的代价,所以选择类型前要先了解程序的细节并且比较long类型与int类型的实际运行时性能代价。
决定使用哪种浮点型就容易多了:使用double类型基本上不会错。在float类型中隐式的精度损失是不能忽视的,而双精度计算的代价相对于单精度可以忽略。事实上,有些机器上,double类型比float类型的计算要快得多。long double类型提供的精度通常没有必要,而且还要承担额外的运行代价
最近更新
随机推荐
- 小米千元新品今日揭晓 或为“紫米”
- 微软发布重要补丁 请用户注意更新(图
- 菜鸟理财洪佳彪:2019不可错过的财富
- ChinaJoy开幕在即 迅雷网游加速器与微
- 新浪微博客户端更新渠道数据 360占28
- 互联网《自律公约》发布 行业退出机制
- 易通贷:监管之下如何安全投资P2P
- MiniBill Config[Plugin_Dir]参数远程
- 视频:美国招募黑客饱受诟病 如何约束
- FlashPlayer FileReferenceAPI文件上
- 乔治
- Adobe软件存在漏洞 危及所有网络视频
- 政府网站多半作秀 频繁遭到黑客篡改
- 我用电脑黑了全世界(九十)
- 榕基每周漏洞播报
- 天威诚信2019“凝聚
- 我用电脑黑了全世界(四)亡命天涯
- 2005年恶意程序肆虐横行 花样翻新
- MS05-022:MSN Messenger中漏洞 导致远
- 销售数据表现强劲促亚马逊股价再创新