提问人:andre 提问时间:10/12/2023 最后编辑:Chrisandre 更新时间:10/17/2023 访问量:115
Pascal 上的非法表达
Illegal Expression on Pascal
问:
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)
答:
3赞
Hoàng Hải Lý
10/12/2023
#1
Pascal 中的 sqrt() 函数仅适用于整数类型,而 d 是实数类型。因此,尝试将实值传递给 sqrt() 会导致非法表达式错误。
要解决此问题,您需要使用支持实数的不同平方根函数,例如:
uses Math;
//...
sqrt(d);
或者,您可以在使用 sqrt() 之前先将 d 转换为整数:
c := trunc(d);
sqrt(c);
评论
0赞
andre
10/12/2023
谢谢你的回答,我会试一试。
2赞
tofro
10/13/2023
sqrt()
在整数和实数类型上工作得很好。但是,需要将返回值分配给实际类型。
0赞
Community
10/15/2023
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。
1赞
Tom Brunberg
10/16/2023
你说:Pascal 中的 sqrt() 函数只适用于整数类型。AFAIK,采用实数类型和整数类型。请参阅确认您的陈述的文档,或编辑您的答案。sqrt()
1赞
Trome
10/13/2023
#2
sqrt()
返回一个 Extended 值,要接收结果,您需要将其分配给变量,与:sqr()
c := sqr(c);
writeln(c);
d := sqrt(d);
writeln(d);
3赞
tofro
10/13/2023
#3
sqrt()
是一个返回值的函数,需要用作该值。你把它当作一个程序来使用。
函数需要将其返回值分配给变量,例如
c := sqrt (c);
为其分配返回值的变量必须是 REAL 类型。sqrt()
评论