Der folgende Code ist hier mit halten die C Sprache Syntax:Call by Need und Standard C Output?
#include <stdio.h>
int func(int a, int b){
if (b==0)
return 0;
else return func(a,b);
}
int main(){
printf("%d \n", func(func(1,1),func(0,0)));
return 0;
}
Was die Ausgabe dieses Codes auf 1) läuft mit Standard-C, 2) mit einem beliebigen Sprache, die Call-by-Bedarf Eigenschaft hat Dann:
in (1) die Programme Schleife in unendlichen Anruf und in (2) haben wir output Null! Dies ist ein Beispiel von TA in Programmiersprache Kurs gelöst, jede Idee zu beschreiben es für mich? Dank
Was meinen Sie mit "Es ist bis zum Prozessor, um die Reihenfolge der Funktionsargumente zu wählen"? Warum ist es UB? – Xiobiq
Ich weiß, aber warum denken Sie, es hat undefiniertes Verhalten? –
Entweder 'func (1,1)' oder 'func (0,0)' könnten zuerst ausgewertet werden ... aber da beide vor dem äußeren 'func()' Aufruf ausgewertet werden müssen, ergibt sich immer noch eine unendliche Rekursion (in C). – Dmitri