我是c ++的新手,并没有在任何地方的程序中看到这样的声明。请帮帮我
答案 0 :(得分:2)
对于整数类型
i>> = 3;
等于:
i = i>> 3;
即按位移位变量i
正确(在他的情况下)到位。
对于用户定义的类,可以将其重载为作者希望此运算符实现的任何功能
答案 1 :(得分:1)
鼓励使用复合赋值运算符,因为它只评估LHS一次。
来自C ++ 11标准:
5.17分配和复合赋值运算符
...
7
E1 op = E2
形式的表达式的行为等同于E1 = E1 op E2
,但E1
仅被评估一次。
如果您有一个返回对象引用的函数,那么当您使用复合赋值运算符时,它会更有效并且更不容易出错。
E.g。
std::vector<int> v(10, 1);
v[4] <<= 2;
优于
std::vector<int> v(10);
v[4] = v[4] << 2;
答案 2 :(得分:0)
答案 3 :(得分:0)
在c中,一般来说,一个等于跟随它的运算符是“执行操作,并将结果放回同一个变量中”的简写。
x = x >> 4; // shift x right by 4 bits
x >>= 4; // exactly the same as above
x <<= 3; // shift x left by 3 bits
这假设x是一个数字类型,如long,unsigned short等。
如果x不是数字,那么原始程序员可能会将该操作定义为c ++中的重载运算符,例如,从字符串中删除n个字符。
答案 4 :(得分:0)
那些被称为复合赋值运算符。其中近10种采用C / C ++语言。前+= -= *= <<= >>=
。当其中一个操作数与要分配的最终结果相同的变量相同时,在二进制操作中,这可以用作短手语法。 Ex a=a+b
可以写为a+=b
。在同一个a=a<<2
中可以写为a<<=2
。其他语言也支持这种类型的语法糖。