2011-03-31 96 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); 
} 

解释以上代码:665请解释输出

我明白为什么s=6x=1+4=5a=6-5=1t=8-4=4)...请告诉我如何y当属6,我以为y1+4=5a=1t=4

谢谢,请帮助我。

回答

1

由第一吨增加,然后一个和t之和返回

所以,叔为4,则执行操作者T + = A和T变得5. 和A + T == 1+ 5 == 6返回

5

告诉我Ÿ是怎么来的6 ...

电话dok函数修改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

谢谢!我忘了增加一个回报声明,但现在它已被清除。 :) – John 2011-03-31 22:59:16

1

使用dok函数将t的值更改为4,并且doky函数将该值增加1(a中的值)。总结该(5到目前为止)到再次(设置为1)的值,这是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

只是用铅笔和纸做...

 
       | 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|