我有代码行
int i =0;
result |= EXPECT_EQUAL(list.size(), 3);
|=
男士是什么意思?
我试图编译类似的东西:
int result |= 5;
但得到了错误:
aaa.cpp:26:16: error: expected initializer before ‘|=’ token
答案 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 ++,我们只能猜测你的意图。