繁体   English   中英

请解释输出

[英]please explain the output

#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 )...请告诉我y6怎么来的,我以为y1+4=5a=1t=4

谢谢,请帮帮我。

告诉我y是6点...

调用dok函数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
}

首先t增加a,然后返回a和t的总和

因此,t为4。然后执行运算符t + = a,并且t变为5。返回a + t == 1 + 5 == 6

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

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

只是用铅笔和纸做...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM