程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 用&&和||代替if..else..

用&&和||代替if..else..

編輯:C++入門知識

在C++中,像這樣的表達式:expression1  &&  expression2
如果expression1的值為零時,整個&&表達式就會結束,也就是說不會再去計算expression2了。
&&表達式的這種計算策略,叫作短路求值(More Effective C++中叫作“驟死式”)。
其實,如果我們利用這個特性,就可以用&&和||來代替if..else..。
 
if..else版本:
if (expression1) 

    expression2; 

else 

    expression3; 

&&和||版本:
expression1 && (expression2 || 1) || expression3; 

?:版本:
expression1 ? expression2 : expression3; 

以上三個版本中,?:版本最具有局限性。比如下面這段代碼:
#include <iostream> 
 
int main ()  
{  
    int a; 
 
    if (1) 
        std::cout << "1"; 
    else 
        a = 0; 
     
    return 0;  

如果換成?:版本的,就會出錯:
int main ()  
{  
    int a; 
    1 ? (std::cout << "1") : (a = 0); //編譯出錯 
    return 0;  

出錯原因是因為語法規定?:中:兩邊的值的類型要一致。所以說,這就是?:的局限性。
但如果換成&&和||,卻並沒有這種局限:
#include <iostream> 
 
int main ()  
{  
    int a; 
    1 && ((std::cout << "1") || 1) || (a = 0); //編譯通過 
    return 0;  

這是因為&&和||只需要判斷表達式的值是否為零,所以不存在類型的問題。
 
呵呵,以上的代碼比較有趣。不過在實際工程中,沒有人會使用這種晦澀難懂的代碼。對於&&和||的這種計算策略,大概知道一下就可以了。


摘自  kof2001kop

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved