Pascal 上的非法表达式

问题描述 投票:0回答:2
program latihan;
uses crt;

var
a,b,c:integer;
d:real;

begin
    write('a: ');
    readln(a);
    write('b: ');
    readln(b);
    c:=a+b;
    d:=a+b;
    sqr(c);
    writeln(c);
    sqrt(d);
    writeln(d:0:0);
end.

为什么代码中有非法表达式

sqrt(d)
??

解释为什么

sqrt(d)
代码中可能存在非法表达式以及如何修复它?

pascal freepascal
2个回答
0
投票

Pascal 中的 sqrt() 函数仅适用于整数类型,而 d 是实数类型。因此,尝试将实际值传递给 sqrt() 会导致非法表达式错误。

要解决此问题,您需要使用支持实数的不同平方根函数,例如:

uses Math;

//...

sqrt(d);

或者,您可以在使用 sqrt() 之前先将 d 转换为整数:

c := trunc(d);
sqrt(c);

0
投票

sqrt() 返回一个扩展值,要接收结果,您需要将其分配给变量,与 sqr() 相同,

...
c := sqr(c);
writeln(c);
d := sqrt(d);
writeln(d);
...

最后一行无效 也许你想写:

writeln(d,0,0);
© www.soinside.com 2019 - 2024. All rights reserved.