C 三元運算子 高階點的用法

2021-09-13 00:00:34 字數 1701 閱讀 7253

c#中有乙個三元運算子「?:」,語法為:條件表示式?表示式1:表示式2;

該操作首先求出條件表示式的值(bool型別),為true時呼叫表示式1,為flase時呼叫表示式2。其邏輯為:「如果為真執行第乙個,否則執行第二個。」

例如:

a=3>4?3:4;輸出為4。

a=3<4?3:4;輸出為3。

初級三元運算子用法:

p=bool?a:b

當bool=true,p=表示式a,當bool=false,p=表示式b。

那麼當你遇到?:?:時,不要楞,三元運算子也是可以巢狀的。

用aforge.net時,有**如下:

var population = new population(populationsize,

new permutationchromosome(citiescount),

fitnessfunction,

(selectionmethod==0)?(iselectionmethod)new eliteselection():

(selectionmethod==1)?(iselectionmethod)new rankselection():

(iselectionmethod)new roulettewheelselection()

);

當看到,

(selectionmethod==0)?(iselectionmethod)new eliteselection():

(selectionmethod==1)?(iselectionmethod)new rankselection():

(iselectionmethod)new roulettewheelselection()

時,直接楞了,發覺,三元運算子似乎也可以巢狀。上面**的作用是,根據selectionmethod的取值,選擇需要的演算法。

/**

* 0:eliteselection演算法

* 1:rankselection演算法

* 其他:roulettewheelselection演算法

*/

這樣的話,巢狀後的理解就方便了。

網上也有如下例子:

test t = new test();

if (t.str == "1")

p = "11";

else if (t.str == "2")

p = "22";

else if (t.str == "3")

p = "33";

那麼用三元運算子巢狀就是:

p = t.str == "1" ? "11":((t.str == "2") ? "22":"33");
因為運算子的優先順序限制,也可以寫成如下方式:

p=t.str == "1"?"11":t.str == "2"?"22":t.str == "3"?"33":"";
換行一下,就是

p = t.str == "1" ? "11" :

t.str == "2" ? "22" :

t.str == "3" ? "33" :

"";

此處原文:歡迎傳播,請標明出處。

C 三元運算子

格式 正如名字表示 條件表示式 表示式1 表示式2。說明 問號前面的位置是判斷的條件,判斷結果為bool型,為true時呼叫表示式1,為false時呼叫表示式2。三元運算子語法 條件表示式 表示式1 表示式2 int a 5 string str a 10?a大於10 a小於10 輸出為 a小於10...

三元運算子

根據條件執行兩個語句中的其中乙個。test?語句1 語句2引數 test 任何boolean 表示式。語句1當 test 是true時執行的語句。可以是復合語句。語句2當 test 是false時執行的語句。可以是復合語句。說明?運算子是if.else語句的快捷方式。它通常被用作較大表示式的一部分,...

三元運算子

先定義a和b 兩個數比較 int a 123 int b 144 通過定義big來反映a和b誰更小 int big a b?a b 通過定義small來反映a和b誰更小 int small asystem.out.println a和b之間較大的數 big system.out.println a和...