为什么整数表达式的值超过特定整数类型的取值范围时没有引发 ERangeError 异常
比如下面一段代码应该会引发一个 ERangeError 异常,但是实际测试结果并没有捕获到异常,代码如下:
procedure TForm1.btnCatch2Click(Sender: TObject);
var
SmallNumber:ShortInt;
X,Y:Integer;
begin
try
X:=100;
Y:=75;
SmallNumber := X + Y;
ShowMessage(IntToStr(SmallNumber));
except
on ERangeError do
ShowMessage('Error');
end;
end;
预计显示结果:弹出Error信息提示框
实际显示结果:-81
相关推荐
C++数据类型及取值范围
C++数据类型及取值范围 1.基本数据类型: ①字符类型:char(字符型) 例:‘A’,’b’ ②整数类型:int(整型) 例:4563, 234, 885634 ③浮点类型:float(单精度型)、double(双精度型) 例:3.1456 , 0.9e12 ④空值类型:void(空值型) ⑤布尔类型:bool 例:true , false。 2.类型修饰符共四种 例:short a; ; 则-32767≤a ≤32767 例:unsigned short a; ; 则0≤a ≤65535 signed(有符号) unsigned(无符号) long(长型) short (短型) 3.常用数据类型 ①char (signed char) ,unsigned char:1个字节 ②short(signedshort),unsigned short:2个字节 ③int(signed int) ,unsigned int:4个字节 ④long (signed long) ,unsigned long:4个字节 ⑤float:4个字节(大约6位有效数字) ⑥double:8个字节(大约12位有效数字) ⑦long double:10个字节(大约15位有效数字) 4.常用数据类型取值范围 数据类型关键字 字节数 数值范围 char 1 -128到126 unsigned char 1 0到255 short 2 -32,768到32,767 unsigned short 2 0到65,535 long 4 -2,147,483,648到2,147,483,648 unsigned long 4 0到4,294,967,295 int 4 同long unsigned int 4 同unsigned long float 4 1.2E-38到3.4E381 double 8 2.2E-308到1.8E3082 bool 1 true或false
C++整数类型取值范围[可运行源码]
本文详细介绍了C++中基本数据类型如int、long等整数类型的取值范围及其背后的原理。文章首先解释了计算机中整数以补码形式存储的概念,正数的补码与原码相同,负数的补码则是对其原码逐位取反(符号位除外)后加1。通过4位二进制的例子,文章分别阐述了无符号类型和有符号类型的取值范围计算方法。无符号类型的表示范围为0到2^n-1,而有符号类型由于补码的存储方式,其表示范围为-2^n到2^n-1。文章还特别指出,补码表示中-0和+0的编码相同,因此多出的编码被用于表示更大的负数。最后,文章总结了不同位数下整数类型的取值范围,为读者提供了全面的理解。
int型数字取值范围
怎样确定int型数据在十六位的取值范围,从根本上解决你的疑惑。
mysql中TINYINT的取值范围
在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127。无符号的范围是0到255(见官方《MySQL 5.1参考手册》http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types)。 Tinyint占用1字节的存储空间,即8位(bit)。那么Tinyint的取值范围怎么来的呢?我们先看无符号的情况。无符号的最小值即全部8位(bit)都为0,换算成十进制就是0,所以无符号的Tinyint的最小值为0.无符号的最大值即全部8bit都为1,11111111,换算成十进制就是255.这很好理解
short,int ,long,float取值范围
在IEEE754标准下探讨short,int ,long,float取值范围,文档中包含一段验证程序,在VC6.0环境下编译通过,全面展示short,int ,long,float取值范围,以及double取值范围的推广。


语言基础/算法/系统设计
