2011-03-31 32 views
0

我的变量初始值定义如下:以及y>>=x&0x2&&z中的那些变量值是什么?运算符优先级拼图

我会做:

y >>= ((Fun1) && z) 

Fun1 = x&0x2,也就是1010 & 0010 = 0010,或2小数位操作;

Fun1 && z返回1,或0001二进制

然后我的问题是什么是

操作
y >>= 0001 

给我?

#include <iostream> 
using namespace std; 

int main() 
{ 
    int x = 10, y = 4, z = 1; 

    y >>= x&0x2&&z; 

    cout << "x: " << x << endl; 
    cout << "y: " << y << endl; 
    cout << "z: " << z << endl; 

    return 0; 
} 
+1

这应该得到一个功课标签? – hometoast 2011-03-31 13:49:19

+1

你编译并运行它吗? – 2011-03-31 13:51:03

+0

'&'和'&&'有什么区别?运营商的优先级是什么? – 2011-03-31 13:52:55

回答

2
y >>= 1 

相同

y = y >> 1 

所以它应该有效整除y 2.

+0

很酷。有一个>> =操作符称为按位右移赋值,对吗?你似乎用foo + = 1 => foo = 1 + foo这样的速记,对吗? – Dean 2011-03-31 14:14:06

+0

对。你的问题是那个操作员是什么?我回答:“y >> = 0001的操作给了我什么?” – hometoast 2011-03-31 18:18:35

6
  1. 有疑问时使用的牙套
  2. 疑问使用当撑杆
  3. 疑问使用当撑杆