free pascal 输入必须小于32768

来源:百度知道 编辑:UC知道 时间:2024/05/15 12:10:42
program exam;
var a,b,c,d,e,f,g,abcdef:integer;
begin
while not eof do
begin
readln(abcdef);
a:=abcdef div 100000;
b:=abcdef div 10000 mod 10;
c:=abcdef div 1000 mod 10;
d:=abcdef div 100 mod 10;
e:=abcdef div 10 mod 10;
f:=abcdef mod 10;
g:=a*a+b*b+c*c+d*d+e*e+f*f;
writeln(g);
end;
end.
大家帮我看一下,为什么输入必须小于32768,否则就跳掉了

因为你用的是integer,这个类型的范围就是32768,你用longint、qword或int64就不会这样了

因为你用的都是integer型变量,这一类型变量最大只能到32768
如果想更大的话用longint,in64或者自己写高精度吧

因为你定义的类型是interger,他的范围是-32768~+32767
你可以把integer改成longint。这样范围是-2^31~+2^31-1
或者改成int64,范围是-2^64~+2^64

INTEGER de 范围就是-32768-32767
楼上几个人说用int64和qword,在某些时候是会出错的!!

可以设为longint,值为2的32次方减一。word为65535

integer为整形,范围是 -32769到32768