使用if语句与使用条件运算符“?:”有什么不同?

解决方案 »

  1.   

    楼上的说得很对,最主要就是IF是多重条件,而?只是单一条件如IF可以用
    IF
    else if
    else if
    else而?就只能是
    ? 1:2
      

  2.   

    楼上的错了
    A?B:(C?D:(E?F:G))难道不可以吗
    完全可以的
      

  3.   

    如果从功能上来说,是没什么区别的,if能做到的事情,三元运算符也能做到;但不知道编译器编译时会不会做一些优化的动作,这个就只能问编译器设计者了。
    此外,从程序可读性上来说,如果只是一个条件,明显三元运算符更简洁;但如果是多个条件,那么使用if吧,否则读程序的人会把你骂上几千遍。
      

  4.   

    if能做的事,?:不一定都能做到(C/C++是可以的,java不行)
    比如if里可以执行多条语句,但?:不行
    if (a==1) {
        System.out.println("a is 1");
        System.out.println("0k");
    } else {
      System.out.println("a is not 1");
      System.out.println("NG");
    }
    这样的if,?:就做不到了,但是可通过调用函数,比如把
    System.out.println("a is 1");
    System.out.println("0k");
    写到一个函数中,然后在?:中调用函数
    但是,这样的函数还有一个条件,就是必须要有返回值,因为?:需要返回值(C/C++也一样)
      

  5.   

    个人感觉if-else看起来清楚一些.
    用三目运算符进行一些简单的分支还行,复杂了就自己把自己搞晕了.
      

  6.   

    建议用if,else你看起来方便,别人看起来也方便.
      

  7.   

    if,else可以用于多重条件,而“?:”只能用于两种情况。
      

  8.   

     IF ELSE 比较好理解,判别条件长的话也清晰,但? :等语句长的话感觉很复杂不容易理解
      

  9.   

    if..else让人更容易懂,也就是程序的可读性强,并且这样写程序的逻辑性也很强。
    三元运算符?:对于运算稍微简单的还可以,但是如果是复杂的就很难读懂了。
    我个人感觉,还是用if...else好些。
      

  10.   

    我来说明一下,一个非常严重的本质区别:
    先做定义
    int a = 1;
    double b = 2.1d;
    int c ;使用三目运算符?:
     c = a<b?a:b;
    编译错误.返回值是一个double类型,不是int,运算符的一个重要特性就是会在运算之前将所有数据类型转换成相同的类型,所以a被转换成了double类型进行操作.而结果当然也是double类型.如果使用if.则如下:
    if(a<b)
    {
    c = a;
    }
    正常通过编译.
      

  11.   

    17楼描述有误吧只有if 没有 else 不能比较
      

  12.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【fiveyue】截止到2008-07-11 17:06:39的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  13.   

    例:i>0?x=1:x=2
    转化成if-else:
    if(i>0){
       x=1;
    }else{
       x=2;
    }
    当?前的条件为true时,执行:前面的,为false时,执行:后面的语句,?:使用较简单,方便,一目了然.减少了代码量.但减少了可读性,建议使用if-else;
      

  14.   

         三元运算符更加简洁。而且三元运算符的引入多半就是为了体现这种高效率的编程,
    但假若您打算频繁用它,还是要先多作一些思量——它很容易就会产生可读性极差的代码。
          可将条件运算符用于自己的“副作用”,或用于它生成的值。但通常都应将其用于值,因为那样做可将运算符与if-else明确区别开。下面便是一个例子:static int ternary(int i) {
    return i < 10 ? i * 100 : i * 10;
    }可以看出,假设用普通的if-else结构写上述代码,代码量会比上面多出许多。如下所示:static int alternative(int i) {
    if (i < 10)
    return i * 100;
    return i * 10;
    }但第二种形式更易理解,而且不要求更多的录入。所以在挑选三元运算符时,请务必权衡一下利弊。