-4

我正在学习 OpenGL,我看到了一些这样的功能

function(parameter1 | parameter2);

我从来没有看到“|” 之前,是什么意思?

谢谢。

4

3 回答 3

3

那是按位或。 是 C 中所有运算符的列表。

于 2013-06-22T18:12:37.197 回答
3

|是“按位或”运算符。它获取两个数字中的每个位并返回一个数字,如果相应位在两个数字中的任何一个中打开,则相应位打开,例如:

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

比较&, 按位和 - 仅当它在两个数字中都打开时才打开:

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

^,按位异或 - 如果每个位在一个数字中打开而不在另一个数字中,则每个位都打开:

00001111
01010101
--------
01011010 = 90
于 2013-06-22T18:14:29.347 回答
3

正如@Alexandry Barbarosie 指出的那样,这是按位或运算符。您有时会看到此运算符以这种方式将多个不同的选项组合为函数的单个参数。如果您有许多不同的常量,每个常量都是 2 的不同幂,您可以将这些常量组合成一个常量,方法是将它们全部组合在一起,让函数解码选择了哪些选项。例如,而不是写

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);

希望这可以帮助!

于 2013-06-22T18:15:12.863 回答