2011-03-31 3 views
0
#include<stdio.h> 
#include<conio.h> 

int t=8; 

int dok(int); 
int doky(int); 

int main() 
{ 
    int clrscr(); 
    int x,y; 
    int s=2; 
    s*=3; 
    x=dok(s); 
    y=doky(s); 
    printf("%d%d%d",s,y,x); 
    getch(); 
    return 0; 
} 

int dok(int a) 
{ 
    a+=-5; 
    t-=4; 
    return(a+t); 
} 

int doky(int a) 
{ 
    a=1; 
    t+=a; 
    return(a+t); 
} 

Réponse au code ci-dessus: 665s'il vous plaît expliquer la sortie

Je comprends pourquoi s=6, x=1+4=5 (a=6-5=1, t=8-4=4) ... S'il vous plaît me dire comment y vient comme 6, je pensais que y serait 1+4=5 (a=1, t=4)

Merci de nous aider s'il vous plaît.

Répondre

1

premier t augmente d'une somme, puis d'un t et est retourné

donc, t était alors 4. opérateur t + = un est exécuté et t devient 5. et + t == 1 + 5 == 6 est retourné

5

me dire comment y vient comme 6 ...

appel à la fonction dok modifie t à 4.

int doky(int a) 
{ 
    a=1; 
    t+=a; // Previously t is 4 because of t-=4 in earlier function call 
      // t = 4+1 = 5 
    return(a+t); // 1+5 = 6 retured 
} 
+0

Merci !! J'ai oublié l'ajout d'une déclaration en retour. Mais maintenant, il est effacé. :) – John

1

La valeur de t est changée en 4 avec la fonction dok, et la fonction doky incrémente cette valeur de 1 (la valeur en a). Somme (5 à ce jour) à la valeur d'un nouveau (mis à 1), et qui est 4 + 1 + 1 = 6.

//t is 4, the value of a is irrelevant since it changes on the next instruction. 

a=1; 
t+=a; // t is now 5 

return(a+t); // 1+5 = 6 
0

y = a + t = a + t + a = 1 + 4 + 1 = 6 :)

0

il suffit de le faire avec un crayon et du papier ...

 
       | t | x | y | s | a | 
-----------------+---+---+---+---+---+ 
before main  | 8 |#NA|#NA|#NA|#NA| 
before x=dok(s) | 8 | ? | ? | 6 |#NA| 
inside dok  | 4 |#NA|#NA|#NA| 1 | 
after dok  | 4 | 5 | ? | 6 |#NA| 
before y=doky(s) | 4 | 5 | ? | 6 |#NA| 
inside doky  | 5 |#NA|#NA|#NA| 1 | 
after doky  | 5 | 5 | 6 | 6 |#NA| 
Questions connexes