回 帖 发 新 帖 刷新版面

主题:关于取值范围的问题

今天看到一道题,说是将4位16进制数转为10进制的,答案输出用的是实型变量,原因是用整型会超出范围,但就算是FFFF,用Longint应该也不会超的吧?

回复列表 (共3个回复)

沙发

FFFF=65535,对,不会超过的,不过还是用长整型好,4位以上会超的

板凳

但运行起来的确有问题,若改为实型问题就没有了。

3 楼

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.
能否帮我看看原因?

我来回复

您尚未登录,请登录后再回复。点此登录或注册