Pascal 在下面的代码中,为什么按名称调用不会给出被零除的错误?

Pascal 在下面的代码中,为什么按名称调用不会给出被零除的错误?,pascal,Pascal,输出: 按值调用:被零除错误 按名称调用:5过程p的参数是整数,但当您使用n/0调用它时,n/0类型是实数,这是不兼容的 在Pascal中,您不能在开始和结束之间创建新的过程 您的代码看起来像是C和Pascal的混合体 对不起,我的英语是:这看起来像Pascal,而不是C。在按值调用时,参数在函数之前执行,因此n/0在调用p之前执行,p除以0。在按名称调用时,参数被延迟,并且,由于它从未在p中使用,所以您正在打印n,而不是参数k,那么除法永远不会发生,并且不会出现错误。另外,这不是C。你是说代码

输出: 按值调用:被零除错误 按名称调用:5

过程p的参数是整数,但当您使用n/0调用它时,n/0类型是实数,这是不兼容的

在Pascal中,您不能在开始和结束之间创建新的过程

您的代码看起来像是C和Pascal的混合体


对不起,我的英语是:

这看起来像Pascal,而不是C。在按值调用时,参数在函数之前执行,因此n/0在调用p之前执行,p除以0。在按名称调用时,参数被延迟,并且,由于它从未在p中使用,所以您正在打印n,而不是参数k,那么除法永远不会发生,并且不会出现错误。另外,这不是C。你是说代码可以编译吗?在哪个Pascal编译器中?
begin
integer n;
procedure p(k: integer);
    begin
    print(n);
    end;
n := 5;
p(n/0);
end;