2012-08-10 16 views
2

我是C新手,我明白爲什麼三元運算符可以是有用的,比if/else塊更少的代碼。不尋常的使用三元運算符

我一直在考慮一些C代碼維護,且有一兩件事我注意到是使用三元運營商這樣

myInt = (!myInt) ? MACRO1 : MACRO2; 

這是否做到同樣的事情,因爲這以前的程序員:

myInt = myInt ? MACRO2 : MACRO1; 

這只是一種風格的東西?也許有意義的思考「如果不是」myInt,而不是「如果」?

+1

爲什麼你會在宏三元運算符o.O – zellio 2012-08-10 20:11:01

+2

兩者都是相同的,它只是樣式。 – 2012-08-10 20:11:02

+0

他們完全一樣。但是,如果原始變量名稱更好,則保留原來的名稱。 – nhahtdh 2012-08-10 20:11:03

回答

6

是的,這段代碼完成了完全相同的事情。它僅取決於編寫條件時使用的邏輯 - 所以可以根據樣式進行歸類(即哪一個更容易考慮)。

+0

真棒謝謝你的回覆 – 2012-08-10 20:21:40

2

是的,你是對的。似乎該代碼的鼻祖似乎想讓表達式比需要的稍微混淆一些。

+0

我同意,奇怪的是他/她一貫使用它,對不起,我必須標記另一個答案是正確的,他是第一個。 :(thnx的反應壽 – 2012-08-10 20:22:22

2

我更喜歡第二個例子,因爲它沒有使用反向邏輯,因此更容易理解和更少混亂。

myInt = myInt ? MACRO2 : MACRO1;