首页 > 试题广场 >

下面程序的输出是?

[单选题]
有以下程序
#include <iostream>
using namespace std;
int fun (int x, int y){
    if(x == y)
        return (x);
    else 
        return ((x + y) / 2);
}
int main(){  
    int a = 4, b = 5, c = 6;
    printf("%d\n", fun(2 * a, fun(b, c)));
}
下面程序的输出是?
  • 8
  • 6
  • 12
  • 3
B 两次调用fun函数
发表于 2015-09-21 15:34:20 回复(0)
B  fun(b,c) = (5+6)/2 = 5  fun(2*a,fun(b,c))=(2*4+5)/2=6
发表于 2015-09-21 11:23:21 回复(0)
记住一点,int类型和int类型进行计算,结果还是Int。
举个例子来说,
int a=7,b=5,c;
float d;
c=a/b;
d=a/b;
输出的结果,c的值为1,d的值也为1.
不同在于d为float型,为1.00000000 




发表于 2018-07-17 10:25:53 回复(0)
加减乘除里面,有不同类型时,结果会往大范围转变,如果只是同类型,那么就不会发生类型转换的。例如本题除法结果是有小数的,但是因为都是int类型的,自动舍弃取正了
发表于 2021-03-07 19:14:49 回复(0)
本体考察的是强制类型转换,刚开始的时候还以为没有答案呢,仔细分析之后发现:第一次调用fun函数时,返回的是5=int(5+6)/2),第二次返回的值为6=int(4*2+5)/2),结果为6
发表于 2016-08-23 16:38:35 回复(0)
忘了除
发表于 2016-03-24 13:22:45 回复(0)