什么| =表示在c ++中

时间:2015-08-09 15:35:39

标签: c++

我有代码行

int i =0;
result |= EXPECT_EQUAL(list.size(),     3);

|=男士是什么意思?

我试图编译类似的东西:

int result |= 5;

但得到了错误:

aaa.cpp:26:16: error: expected initializer before ‘|=’ token

2 个答案:

答案 0 :(得分:10)

a |= b;只是a = a | b;的语法糖。相同的语法几乎适用于C ++中的每个运算符。

但是int i |= 5;是一个错误,因为在定义行中你必须有一个初始化,这是一个不使用被声明的变量的表达式。

int i=3;
i |= 5;

有效,会将值7(3 | 5)赋予i

答案 1 :(得分:5)

它是按位OR进行赋值的运算符。

http://en.cppreference.com/w/cpp/language/operator_assignment

int result |= 5;

您无法初始化int并同时为其分配内容。初始化和分配是不同的事情。你必须写:

int result = 0;
result |= 5;

如果这是你想要的,当然。由于int result |= 5;不是C ++,我们只能猜测你的意图。