2013-06-22 22 views
-4

我正在學習OpenGL和我看到這樣什麼是「|」在C函數中?

function(parameter1 | parameter2); 

一些功能我從來沒有看到「|」以前,這是什麼意思?

謝謝。

+6

這是按位或。 –

+0

我知道搜索「|」不起作用,但搜索「C垂直酒吧」帶來了http://stackoverflow.com/questions/3865486/what-does-a-single-vertical-bar-mean-in-c,雖然不一樣問題,也有答案,也回答你的問題。 – hvd

+0

我認爲這是一個完全合理的問題。即使你明白了|意味着「按位或」,一些用於按位OR的用例,特別是在將標誌組合在一起時,並不明顯。 – templatetypedef

回答

3

@Alexandry Barbarosie指出,這是一個按位或運算符。您有時會看到此運算符以這種方式將多個不同選項作爲單個參數組合到一個函數中。如果你有許多不同的常數,每個常數都是不同的二次方,你可以將這些常量合併爲一個常量,方法是將所有這些常量以一種方式解耦合在一起,使函數可以解碼選擇的選項。例如,而不是寫

int function(bool wantOption1, bool wantOption2, /* etc. */); 

你可以寫

const int WANT_OPTION_1 = 1; 
const int WANT_OPTION_2 = 2; 
const int WANT_OPTION_3 = 4; 
const int WANT_OPTION_4 = 8; 
/* ... */ 

然後定義功能

int function(int options); 

然後,您可以通過編寫

function(WANT_OPTION_1 | WANT_OPTION_3); 
調用函數

希望這有助於!

3

這是按位或。 Here是C.中的所有運營商的列表。

3

|是「按位或」運算符。這需要在兩個號碼的每一位,並返回一個數,其中相應的位上,如果它是在任一兩個數字,例如:

00001111 = 15 
01010101 = 82 
-------- 
01011111 = 95 

&比較,按位和 - 位時,僅當它是在兩個號碼:

00001111 
01010101 
-------- 
00000101 = 6 

^,按位異或 - 每個位是如果它是在一個數字而不是其他:

00001111 
01010101 
-------- 
01011010 = 90 
相關問題