设为首页 加入收藏

TOP

2.1.1 算术类型(2)
2013-10-07 16:25:28 来源: 作者: 【 】 浏览:130
Tags:2.1.1 算术 类型

2.1.1  算术类型(2)

带符号类型和无符号类型

除去布尔型和扩展的字符型之外,其他整型可以划分为带符号的(signed)和无符号的(unsigned)两种。带符号类型可以表示正数、负数或0,无符号类型则仅能表示大于等于0的值。

类型int、short、long和long long都是带符号的,通过在这些类型名前添加unsigned就可以得到无符号类型,例如unsigned long。类型unsigned int可以缩写为unsigned。

与其他整型不同,字符型被分为了三种:char、signed char和unsigned char。特别需要注意的是:类型char和类型signed char并不一样。尽管字符型有三种,但是字符的表现形式却只有两种:带符号的和无符号的。类型char实际上会表现为上述两种形式中的一种,具体是哪种由编译器决定。

无符号类型中所有比特都用来存储值,例如,8比特的unsigned char可以表示0至255区间内的值。

C++(www.cppentry.com)标准并没有规定带符号类型应如何表示,但是约定了在表示范围内正值和负值的量应该平衡。因此,8比特的signed char理论上应该可以表示-127至127区间内的值,大多数现代计算机将实际的表示范围定为-128至127。

建议:如何选择类型

C语言一样,C++(www.cppentry.com)的设计准则之一也是尽可能地接近硬件。C++(www.cppentry.com)的算术类型必须满足各种硬件特质,所以它们常常显得繁杂而令人不知所措。事实上,大多数程序员能够(也应该)对数据类型的使用做出限定从而简化选择的过程。以下是选择类型的一些经验准则:

当明确知晓数值不可能为负时,选用无符号类型。

使用int执行整数运算。在实际应用中,short常常显得太小而long一般和int

有一样的尺寸。如果你的数值超过了int的表示范围,选用long long。

在算术表达式中不要使用char或bool,只有在存放字符或布尔值时才使用它

们。因为类型char在一些机器上是有符号的,而在另一些机器上又是无符号的,

所以如果使用char进行运算特别容易出问题。如果你需要使用一个不大的整数,

那么明确指定它的类型是signed char或者unsigned char。

执行浮点数运算选用double,这是因为float通常精度不够而且双精度浮点

数和单精度浮点数的计算代价相差无几。事实上,对于某些机器来说,双精度运

算甚至比单精度还快。long double提供的精度在一般情况下是没有必要的,

况且它带来的运行时消耗也不容忽视。

2.1.1节练习

练习2.1:类型int、long、long long和short的区别是什么?无符号类型和带符号类型的区别是什么?float和double的区别是什么?

练习2.2:计算按揭贷款时,对于利率、本金和付款分别应选择何种数据类型?说明你的理由。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.1.1 算术类型(1) 下一篇2.1.2 类型转换(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)