注册 登录
编程论坛 C语言论坛

请各位大神指教,结果为什么不是2*a的值?

ambi34t 发布于 2023-04-07 11:23, 709 次点击
#include<stdio.h>
    int fun(int x, int y)
    {
        if (x != y)
            return ((x + y) / 2);
        else return (x);
    }
    main()
    {
        int a = 4, b = 5, c = 6;
        printf("%d\n", fun (2*a,fun(b,c)));
    }
2 回复
#2
rjsp2023-04-07 11:41
我将你的代码排版了一下
程序代码:
#include <stdio.h>

int fun( int x, int y )
{
    if( x != y )
        return (x+y)/2;
    return x;
}

int main( void )
{
    int p = fun( 5, 6 );
    int q = fun( 8, p );
    printf( "%d\n", q );
}


但为什么你认为输出8呢?我想不通!
fun(5,6) 因为 5!=6,所以返回 (5+6)/2,即返回 5
fun(8,5) 因为 8!=5,所以返回 (8+5)/2,即返回 6
实在想不出你认为的结果8是怎么来的
#3
ambi34t2023-04-07 12:46
回复 2楼 rjsp
我原来把循环条件看成不成立了,执行后面的else了,感谢大神指教……
1