为了账号安全,请及时绑定邮箱和手机立即绑定

请教对于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);返回值也正确。这是为什么?

正在回答

6 回答

第一种代码:

如果传入的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值)

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

0 回复 有任何疑惑可以回复我~
#1

空山骊语 提问者

非常感谢!
2016-05-14 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

”=“是赋值  

”==“是全等于

0 回复 有任何疑惑可以回复我~

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


0 回复 有任何疑惑可以回复我~

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

}

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信