-7
begin
integer n;
procedure p(k: integer);
begin
print(n);
end;
n := 5;
p(n/0);
end;
sortie: appel par valeur: division par zéro erreur appel par nom: 5pourquoi appeler par nom ne donne pas d'erreur comme diviser par zéro dans le code suivant?
Cela ressemble à Pascal, et non C. – dbush
Sur un appel par appel de valeur, le paramètre est exécutée avant la Ainsi, 'n/0' est exécuté avant d'appeler' p', qui se divise par 0. Lors d'un appel par appel de nom, le paramètre est ** retardé **, et, comme il n'est jamais utilisé dans 'p' (vous 'r' impression 'n', pas le paramètre' k'), alors la division n'arrive jamais, et aucune erreur n'est levée.En outre, ce n'est pas C. – paulotorrens
Êtes-vous en train de dire que le code compile? Dans quel compilateur Pascal? – MartynA