C 短路求值特性的利用

2021-08-15 23:51:27 字數 634 閱讀 7994

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(a?b:c)。

class solution 

};

1.利用遞迴避免迴圈的使用

2.利用c++的短路求值特性,實現遞迴的終止,避免了條件判斷。

3.短路求值

作為」&&」和」||」操作符的運算元表示式,這些表示式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱之為短路求值(short-circuit evaluation)。這是這兩個操作符的乙個重要屬性。

假如expr1和expr2都是表示式,並且expr1的值為0,在下面這個邏輯表示式的求值過程中:

expr1 && expr2

expr2 將不會進行求值,因為整個邏輯表示式的值已經可以確定為0。

類似地,如果expr1的值不是0,那麼在下面的這個邏輯表示式的求值過程中:

expr1 || expr2

expr2將不會進行求值,因為整個邏輯表示式的值已經確定為1。

短路求值

題目討論

C 短路求值(邏輯與 邏輯或)

首先看如下 include using namespace std intmain 執行結果 a 1 a 1 邏輯或的表現形式如下 expression1 exexpression2 這裡用到了邏輯或,由於邏輯或的短路,expression1為true,則後面的expression2 即 a 0 不...

C語言中短路求值問題

以下表示式就是短路現象的其中一種 x y z 如果x為假,直接返回假 若x為真,則執行y 只有x和y都為真才執行z。我們來看以下 求想x,y,z和b的值。include include intmain 這裡我們執行到bool b x y z 這條語句時,編譯器會先執行x 因為x 是後置 得等到整條語...

C 短路求值(邏輯與 邏輯或)

首先看如下 include using namespace std intmain 執行結果 a 1 a 1 邏輯或的表現形式如下 expression1 exexpression2 這裡用到了邏輯或,由於邏輯或的短路,expression1為true,則後面的expression2 即 a 0 不...