已知:int a=40, b=2; 求表达式的值:(a&0377)|(b&0xff)<<8
时间: 2024-04-02 14:37:11 浏览: 12
根据运算符优先级,先进行位运算符 & 运算,再进行位运算符 | 和左移运算符 << 运算。其中,& 用于取 a 和 b 的低 8 位(即 a & 0377 和 b & 0xff),| 用于将两个值合并为一个值,<< 8 用于将 b 的低 8 位移动到高 8 位。
因此,表达式的值为 40 & 0377 | (2 & 0xff) << 8 = 40 | 512 = 552。
相关问题
利用优先级规则,计算下面表达式的值,并确定各个变量的值(不运行代码)。添加括号,显示表示优先级关系。 (a) 假设(x = 0xFF33, MASK = 0xFF00).表达式: c = x & MASK ==0; (b) 假设(x = 10, y = 2, z = 2;).表达式: z = y = x++ + ++y ∗ 2; (c) 假设(x = 10, y=4, z=1;).表达式: y >>= x & 0x2 && z;
(a) 表达式应该加上括号,表示优先级关系:c = (x & MASK) == 0; 变量x的值为0xFF33,MASK的值为0xFF00,所以x & MASK的值为0xFF00。因为0xFF00不等于0,所以c的值为false。
(b) 表达式应该加上括号,表示优先级关系:z = y = x++ + (++y * 2); 变量x的值为10,y的值为2,在表达式计算前,x的值加1,变为11,y的值先加1,变为3,然后再乘2,变为6。所以z和y的值都为6。
(c) 表达式应该加上括号,表示优先级关系:y >>= (x & 0x2) && z; 变量x的值为10,y的值为4,z的值为1。首先计算 x & 0x2,得到2。因为2不等于0,所以表达式 (x & 0x2) && z 的值为true。然后将y右移2位,相当于将y除以4,所以y的值变为1。
利用优先级规则,计算下面表达式的值,并确定各个变量的值(不运行代码)。添加括号,显示表示优先级关系。 (a) 假设(x = 0xFF33, MASK = 0xFF00).表达式: c = x & MASK ==0; (b) 假设(x = 10, y = 2, z = 2;).表达式: z = y = x++ + ++y ∗ 2; (c) 假设(x = 10, y=4, z=1;).表达式: y >>= x & 0x2 && z;
(a) 表达式: c = (x & MASK) == 0;
变量的值:
- x = 0xFF33
- MASK = 0xFF00
(b) 表达式: z = (y = (x++)) + (++y * 2);
变量的值:
- x = 10
- y = 2
- z = 27
(c) 表达式: y >>= ((x & 0x2) && z);
变量的值:
- x = 10
- y = 4
- z = 1