问答详情
源自:5-6 编程练习

请教对于if语句的小改动出现不同的结果,为什么?

此题中如果代码写成

function mynum(x,y){
if(x<y){
    return y;}
else if(x=y){
    return x;}
else{
    return x;}

}
//定义函数
//函数体,判断两个整数比较的三种情况
req1=mynum(5,4);
req2=mynum(6,3);
结果是5 和 4 的较大值是:4
6 和 3 的较大值是:3。

但若改成

function mynum(x,y){
if(x>y){
    return x;}
else if(x=y){
    return x;}
else{
    return y;}

}
//定义函数
//函数体,判断两个整数比较的三种情况
req1=mynum(5,4);
req2=mynum(6,3);

结果5 和 4 的较大值是:5
6 和 3 的较大值是:6。

出现这两种是为什么?或者在第一种写法里改为req1=mynum(4,5);
req2=mynum(3,6);返回值也正确。这是为什么?

提问者:空山骊语 2016-05-10 14:54

个回答

  • OnionsL
    2016-05-10 15:45:41
    已采纳

    第一种代码:

    如果传入的x小于y,会执行第一个return语句,返回y;

    如果传入的x大于等于y,则会执行下一个if语句,将y赋值给x(x=y是将y赋值给x),会返回被y赋值后的x(即y值)

    第二种代码:

    如果传入的x大于y,会执行第一个return语句,返回x;

    如果传入的x小于等于y,则会执行下一个if语句,将y赋值给x(x=y是将y赋值给x),会返回被y赋值后的x(即y值)

    第二种代码虽然能正确返回最大值,但是依然是不正确的写法。

  • 小小帆
    2016-05-17 17:43:27

    你第一个应该是最小值   if(x<y){
        return y;}    y比x小  返回y

  • VicSong
    2016-05-10 17:02:31

    第一种写法里面 这地方不对if(x=y)改成if(x==y)  相等操作符是==

  • qq_她是他的她_1
    2016-05-10 15:44:38

    ”=“是赋值  

    ”==“是全等于

  • ThinkInJava
    2016-05-10 15:30:25

    你代码写错了,你把else if(x=y)改成else if(x==y)就知道了。代码写错了就会出现千奇百怪的事情,x=y是赋值,不会象 x==y 一样产生对错。


  • 遗忘的旋律3337413
    2016-05-10 15:27:18

    function mynum(x,y){
    if(x>y){
        return x;}
    else if(x=y){//你这里写错了,吧y赋值给了x;只要把=改成==就行了
        return x;}
    else{
        return y;}

    }