2017-02-18 4 views
-4
#include<iostream> 
int fun(int &x,int y=10) 
{ 
if(x%y==0) 
    return (++x); 
else 
    return (y--); 
} 
int main() 
{ 
int p=10,q=13; 
q=fun(p,q); 
cout<<p<<q<<endl; 
q=fun(q); 
cout<<p<<q<<endl; 
q=fun(p); 
cout<<p<<q<<endl; 
return 0; 
} 

Der Ausgang wie wie folgt dargestellt:Wie verfolgt man ein C++ Programm von Hand?

1013 
1010 
1111 

Aber wenn ich versuche, es zu lösen Stift und Papier stecken ich bin. Bitte zeigen Sie mir, wie ich zum richtigen Output komme, um meine Konzepte klar zu halten.

Antwort

0

p = q = 10 13

1. Aufruf p = 10, q = 13 p Referenz übergeben wird

zurückgegeben wird Y-- ​​werden, da es Post Dekrement ist, wird es das Rück 13

2. Anruf

q 13 = durch ref geben x = 13 y = 10

Rückkehr wird Y-- ​​werden, die die 10 = 9 nicht, da es Beitrag ist

nun p = 10 und q = 10

3. Aufruf x = 10 und y = 10 standardmäßig return x ++ und x = 11, also q = 11, jetzt seit dessen Aufruf durch ref x = 11, also p = 11 und

+0

Wie wird q = 10 im zweiten Aufruf .q wird von referenziert übergeben, ist aber nicht in der Funktion geändert definition.Is ist, weil y-- 10 zurückgibt? –

+0

Das ist, weil wir im zweiten Aufruf kein zweites Argument übergeben, also wird entsprechend der Standardwert in der Funktionsdefinition verwendet. –

+0

Danke @JaspreetSingh. Das hat geholfen :) –

Verwandte Themen