为什么在C ++中没有运算符〜=?

时间:2017-03-15 10:28:18

标签: c++ syntax operators language-lawyer language-design

int main()
{
    unsigned int a = 0;
    unsigned int b = 0;

    a ^= b; // ok
    a |= b; // ok
    a &= b; // ok
    a = ~b; // ok
    a ~= b; // error : expected ';' after expression
}

^=|=&=都是合法的。

为什么c + ~=不合法?

4 个答案:

答案 0 :(得分:11)

因为function balanceOfTokenB(address _owner) constant returns (uint256 balance);一元运算符,而不是二进制

当第一个操作数是目的地时,短格式~仅适用于二元运算符。

答案 1 :(得分:6)

~只是一元运算符。

对于任意运算符a = a @ ba @= b@的收缩只有在需要两个参数时才有意义;即如果@二进制运算符。

答案 2 :(得分:1)

  

为什么{+ 1}}在C ++中不合法?

那是因为C ++不包含~=运算符; ~=只是两个单独的令牌。

至于为什么C ++不是那样设计的,你必须问设计师,但我认为可以说这是因为C ++最初基于C并且与C具有相同的运算符,只有为新语言功能添加了少量新运算符(即~=::)。

所以你应该再次问这个问题C.

答案 3 :(得分:0)

因为“运算符赋值”(如+=^=)基于具有两个操作数的原始运算。

例如,a + b有两个+的操作数,a += b提供与a = a + b相同的净效果。

运算符~是一元运算符,即它接受一个操作数。所以a = ~b有道理,但a = a~b没有。由于a = a~b没有意义,a ~= b也没有。