| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:>>与~优先级的问题【已解决】
只看楼主 加入收藏
咖啡色裂变
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2013-12-1
结帖率:100%
收藏
 问题点数:0 回复次数:7 
>>与~优先级的问题【已解决】
#include<iostream>
using namespace std;
int main()
{
    unsigned char a=0xA5;
    unsigned char b=~a>>4;
    printf("b=%d\n",b);
    system("pause");
    return 0;
}
这段代码在vs2010里跑出来的结果是245(11110101)。a为10100101,根据这个结果判断是先做了>>,然后做了~,但是~的优先级不是比>>高吗,怎么会先做移位呢
感谢5、6楼的解答
1、位运算时会转成int,所以变成了,00000000,00000000,00000000,10100101;
2、做位运算变成11111111,11111111,11111111,01011010;
3、移位运算,由于是负数,左边填充1,所以变成11111111,11111111,11111111,11110101;
4、如果输出结果是unsigned char,就发生了截断,得到245。如果是int类型,就是-11。-11的补码刚刚好就是上面的那个。


[ 本帖最后由 咖啡色裂变 于 2014-6-4 15:00 编辑 ]
搜索更多相关主题的帖子: include system return 优先级 
2014-06-03 21:57
忘了_这一切
Rank: 3Rank: 3
来 自:星星
等 级:论坛游侠
威 望:1
帖 子:41
专家分:145
注 册:2014-4-25
收藏
得分:0 
~的结合方向是自右至左,>>的是自左至右
2014-06-03 23:18
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:0 
实在搞不清楚就用括号
没必要在这个问题上浪费时间

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-06-03 23:32
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
加了括号还是一样的结果,哈哈


莫问前尘有愧,但求今生无悔
2014-06-04 08:07
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
操作数在位运算之前要被提升为整型
收到的鲜花
  • rjsp2014-06-04 09:18 送鲜花  10朵   附言:正确


莫问前尘有愧,但求今生无悔
2014-06-04 08:31
zziabaogan
Rank: 2
等 级:论坛游民
帖 子:6
专家分:12
注 册:2012-7-19
收藏
得分:0 
问题出在unsigned char b=~a>>4;这一句了。
你打印一下printf("b=%d\n",~a>>4);会发现结果是 -11,这里发生了溢出,所以这句
unsigned char b=~a>>4;实现上是把数据截断了的。
printf("b=%d\n",b);就出现了你意想不到的结果。
2014-06-04 09:38
咖啡色裂变
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2013-12-1
收藏
得分:0 
回复 5 楼 pycansi
一语道破,太感谢了
2014-06-04 14:46
咖啡色裂变
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2013-12-1
收藏
得分:0 
回复 6 楼 zziabaogan
太感谢了,解释的很详细,再次感谢
2014-06-04 14:48
快速回复:>>与~优先级的问题【已解决】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020560 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved