C++就要这样学8--C++数值常量2.2.2

我是K,我致力于网络安全。

昨天我们已经讲了C++的数据类型,今天让我们来讲一下C++中,有关常量的知识。

2.2.1 什么是变量?

常量的值是不能改变的,一般从其字面形式即可判断是否为常量。常量包括两大类:数值型常量(即常数)和字符型常量。如12,0,-3为整型常量,4.6,-1.23为实型变量。包括在两个单撇号之间的字符为字符常量,如‘a’,‘x’。这种从字面形式即可识别的常量称为“字面常量”“直接常量”

2.2.2 数值常量

数值常量就是通常所说的常数。在C++中,数值常量是区分类型的,从字面形式即可识别其类型。

1 整型常量(整数)的类型

在2.1中已知,整形数据可分为int,short int,long int和unsigned int,unsigned short,unsigned long等类别。整型常量也分为以上类型。为什么将数值常量区分为不同的类别呢?因为在进行赋值时或函数的参数虚实结合时要求数据类型匹配。

那么,一个整型变量怎样从字面上区分为以上的类别呢?

(1)一个整数,如果其值在-32768~+32767范围内,认为它是short int型,它可以赋值给short int型,int型和long int型变量。

(2)一个整数,如果其值超过了上述范围,而在-2147483648~+2147483647范围内,则认为它是long int型,它可以赋值给一个int或long int型变量。

(3)如果某一台计算机系统的C++版本(例如Visual C++)确定int型与long int型数据在内存中占据的长度相同,则它们能够表示的数值的范围相同。因此,一个int型的常量也同时是一个long int型常量,可以赋给int型或long int型变量。

(4)常量无unsigned型。但一个非负值的整数可以赋值给unsigned型变量,只要它的范围不超过变量的取值范围即可。例如,将50000赋给一个unsigned short int型变量是可以的,而将70000赋给它是不行的(将会溢出)。

一个整型常量可以用3种不同的方式表示。

(1)十进制整数。如1357,-432,0等。在一个整常量后面加一个字母l或L,则认为是long int型常量。例如123L,421L,0L等,这往往用于函数调用中。如果函数的形参为long int,则要求实参也为long int型,此时用123做实参不行,而要用123L作实参。

(2)八进制整数。在常数的开头加一个数字0,就表示这是以八进制数形式表示的常数。如020表示这是八进制数20,即(20)8,它相当于十进制数16。

(3)十六进制整数。在常数的开头加一个数字0和一个英文字母X(或x),就表示这是以十六进制数形式表示的常数。如0X20表示这是十六进制数20,即(20)16,它相当于十进制数32。

2. 浮点数的表示方法

一个浮点数可以用两种不同的方式表示。

(1)十进制小数形式。如21.456,-7.98等。它一般由整数部分和小数部分组成,可以省略其中之一(如78.或.06,.0),但不能两者皆省略。C++编译系统把用这种形式表示的浮点数一律按双精度常量处理,在内存中占8个字节。如果在实数的数字之后加字母F或f,表示此数为单精度浮点数,如1234F,-43f,占4个字节。如果加字母L或l,表示此数为长双精度数(long double),在GCC中占12个字节,在Visual C++中占8个字节。

(2)指数形式(即浮点形式)。一个浮点数可以写成指数形式,如3.14159可以表示为0.314159*10^1,3.14159*10^0,31.4159*10^-1,314.159*`0^-2等形式。在程序中表示为0.314159e1,3.14159e0,31.4159e-1,314.159e-2,用字母e表示其后的数是以10为底的幂,如e12表示10^12。

其一般形式为:

字符     数字部分     指数部分

上面各数据中的0.314159,3.14159,31.4159,314.159等就是其中的数字部分。可以看到,由于指数部分的存在,使得同一个浮点数可用不同的指数形式来表示,数字部分中小数点的位置是浮动的。例如当指数为1时,小数点在数字3的前面,指数为0时,小数点在数字3的后面,指数为-1时,小数点在数字31的后面。浮点数的名字即源如此。例如:

a=0.314159e1;

a=3.14159e0;

a=31.4159e-1;

a=314.159e-2;

以上4个赋值语句中,用了不同形式的浮点数,但其作用是相同的。

在程序中不论把浮点数写成小数形式还是指数形式,在内存中都是以指数形式(即浮点形式)存储的。例如不论在程序中写成314.159或314.159e0,31.4159e1,3.14159e2,0.314159e3等形式,在内存中都是以规范化的指数形式存放,如图2.3所示。

+.3141593
数符数字部分指数部分

图2.3

数字部分必须小于1,同时,小数点后面第1个数字必须是一个非0数字,例如不能是0.0314159。因此,314.159和314.159e0,31.4159e1,3.14159e2,0.314159e3在内存中都表示为0.314159*10^3。存储单元分为两部分,一部分用来存放数字部分,另一部分用来存放指数部分。为便于理解,在图 2.3中是用十进制表示的,实际上在存储单元中是用二进制数来表示小数部分,用2的幂数来表示指数部分的。

对于以指数形式表示的数值常量,也都作为双精度常量处理。

King

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值