在一本资料书上看到了这样一个函数:
bool function(int x,int y)
{
        ......
    return x==y;
}
我想问大家的是,x==y这个语句到底是怎样实现的?
它等价于什么语句?我们平时看到的大都如下:
if(x==y)
{
     return ture
}
else
{
     return false
}

解决方案 »

  1.   

    BOOL bRtn = FALSE;
    if ( x == y )
        bRtn = TRUE;
    return bRtn;
      

  2.   

    if( x==y )
    {
       return TRUE;
    }
    return FALSE:
      

  3.   

    return x == y ? TRUE : FALSE;
      

  4.   

    x==y 是一个判断语句,如果x和y相等,就会返回一个true值,否则返回一个false。return x==y; 与if(x==y) 

        return ture 

    else 

        return false 
    }
    是等价的,不过前者更加简洁
      

  5.   

    if(x==y)
    {
        return ture
    }
    else
    {
        return false
      

  6.   

    到底是4楼的正确还是8楼的正确?另外,x==y这个表达式是返回ture和false吗?编译器在编译x==y时是怎么翻译的呢?
      

  7.   


    这里面 x y 适用于 int 类型
    float double 很难做到 相等的概念
    所有浮点数 是做差 < 10 E -5 来判断更好一些
      

  8.   

    楼上的解答不正确,实际上我看到的实例是《COM技术内幕》书上的例子,
    等号两边的是IUnknown类型的变量。我觉得这个等号操作两边的操作数只要类型一样就可以按照它们的类型规则进行比对,
    如果不一样为非0值,返回false,如果一样为0值,返回true。
    就像汇编里的test指令。不知道这样理解是否正确?
    另外:
    return x==y;
    上面的是不是比下面的执行的更快一点?在时间上和空间上都优越一点? 
    if(x==y) 

        return ture 

    else 

        return false 
    }
      

  9.   

    true 或者false
    不建议这样写
      

  10.   

    如果x=y,返回TRUE,否则返回FALSE。其实x==y就是个条件语句。
     相当于:
    if(x==y) 

        return ture 

    else 

        return false 
    }
      

  11.   

    如果x==y,就返回true
    否则返回false
      

  12.   

    if( x==y ) 

      return TRUE; 

    return FALSE:
      

  13.   

    用return x==y是否有时间上和空间上的优越性呢?
      

  14.   

    return (x==y)
    就是。。楼上他们说的。
      

  15.   

    bool ret;
    ret = (x==y);
    returm ret;
      

  16.   

    f(x==y) 

        return ture 

    else 

        return false 
    }和return x==yRelease版本中,编译出来后有没有效率上的区别?
      

  17.   

    VC在X86上编译出来指令是不同的,return x==y 效率高得多,两条指令,
    if else 是5条指令,时间也慢。
      

  18.   

     return x==y ;写法很高明.
      

  19.   


    == 是操作符,你能够理解  return x+y;吗???就是一样的道理呀。那么x==y自然就是一个表达式,显然一切就是那么简单。 x,y是int类型,int类型支持==操作符,所以能x==y这样用。如果是自己定义的类型就要重载==操作符。时间与空间的问题是算法复杂度的概念,应该来说在数量级上的差别才能区别这两种算法的优劣,显示这两种都在常量级,也就无所谓算法的好与坏。只是少两行代码,代码比较简洁而已。
      

  20.   

    其实两种代码差别很大,不只是简洁问题,比如说在作一个灰度图象二值化的时候,速度可能有几倍差距, 现在的PC上x==y要快得多,但是在某些CPU和某些应用上,if else反而快。
      

  21.   

    4:        return a==b;
                 mov         eax,dword ptr [ebp+8]
                 xor         ecx,ecx
                 cmp         eax,dword ptr [ebp+0Ch]
                 sete        cl
                 mov         eax,ecx
      

  22.   

    4:        if (a==b)
    00401038 8B 45 08             mov         eax,dword ptr [ebp+8]
    0040103B 3B 45 0C             cmp         eax,dword ptr [ebp+0Ch]
    0040103E 75 07                jne         equ+27h (00401047)
    5:
    6:            return 1;
    00401040 B8 01 00 00 00       mov         eax,1
    00401045 EB 02                jmp         equ+29h (00401049)
    7:
    8:        else
    9:
    10:           return 0;
    00401047 33 C0                xor         eax,eax
      

  23.   

    我觉得
    return x==y; 加上个圆括号 变成
    return (x==y); 要好理解得多吧 
      

  24.   

    与if(x==y) 

        return ture 

    else 

        return false 
    }
    效果一样。