主题:关于取值范围的问题
ctsc
[专家分:0] 发布于 2008-07-28 12:49:00
今天看到一道题,说是将4位16进制数转为10进制的,答案输出用的是实型变量,原因是用整型会超出范围,但就算是FFFF,用Longint应该也不会超的吧?
回复列表 (共3个回复)
沙发
xuyifan [专家分:40] 发布于 2008-07-28 15:00:00
FFFF=65535,对,不会超过的,不过还是用长整型好,4位以上会超的
板凳
ctsc [专家分:0] 发布于 2008-07-30 12:37:00
但运行起来的确有问题,若改为实型问题就没有了。
3 楼
ctsc [专家分:0] 发布于 2008-07-30 12:39:00
var
ch:char;
i:1..4;
dec,dec1,dec2,dec3,dec4:0..15;
j:real;
begin
for i:=1 to 4 do begin
read(ch);
ch:=upcase(ch);
case ch of
'0'..'9':dec:=ord(ch)-48;
'A'..'Z':dec:=ord(ch)-55;
else
exit;
end;
case i of
1:dec1:=dec;
2:dec2:=dec;
3:dec3:=dec;
4:dec4:=dec;
end;
end;
writeln;
j:=dec1*4096+dec2*256+dec3*16+dec4;
write(j);
readln;
end.
能否帮我看看原因?
我来回复