首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

~和>>的优先级有关问题

2012-05-06 
~和的优先级问题书上不是说~要比的优先级高么,但是为什么下面这段代码是先计算?#include stdafx.h

~和>>的优先级问题
书上不是说~要比>>的优先级高么,但是为什么下面这段代码是先计算>>?
#include "stdafx.h"
int main()
{
unsigned char a=0xA5;
unsigned char b=~a>>4;
printf("%d",b);
return 0;
}

[解决办法]
小于int类型长度的数据类型的数据在参加运算之前会先提升为int类型,这就是所谓的“整值提升”
所以unsigned char b=~a>>4;
的执行步骤是(32位下):
1. a先提升为int, 0xA5-->0x000000A5
2. 取反0x000000A5-->0xFFFFFF5A
3. 右移,逻辑右移:0xFFFFFF5A-->0x0FFFFFF5 算术右移:0xFFFFFF5A-->0xFFFFFFF5
4. 截断赋值 b = 0xF5 


[解决办法]
学习了。。
[解决办法]
顶一下

热点排行