注册 登录
编程论坛 C++教室

谁来帮我解释下这个可好?

yt414204458 发布于 2014-06-04 09:43, 500 次点击
#include <iostream>
using namespace std;
int main()
{
unsigned char a=0xA5;
unsigned char b=~a>>4;
printf("b=%d\n",b);
}
#include <iostream>
using namespace std;
int main()
{
unsigned char a=0xA5;
unsigned char b=(~a)>>4;
printf("b=%d\n",b);
}
#include <iostream>
using namespace std;
int main()
{
unsigned char a=0xA5;
unsigned char b=~(a>>4);
printf("b=%d\n",b);
}
他们的答案为啥都是一样的啊?希望能有一个详细的运算过程
3 回复
#2
砖家的谎言2014-06-04 10:11
肯定是一样的,你仔细看下你的问题
#3
rjsp2014-06-04 10:29
(~a)>>4;
a的值为10100101,a表达式值为 00000……00000 10100101
~a表达式的值就变成 11111……11111 01011010
(~a)>>4表达式的值就变成 11111……11111 11110101
强转为 unsigned char 就是 11110101


~(a>>4)
a的值为10100101,a表达式值为 00000……00000 10100101
a>>4表达式的值就变成 00000……00000 00001010
(~a)>>4表达式的值就变成 11111……11111 11110101
强转为 unsigned char 就是 11110101
#4
yt4142044582014-06-04 11:05
以下是引用rjsp在2014-6-4 10:29:32的发言:

(~a)>>4;
a的值为10100101,a表达式值为 00000……00000 10100101
~a表达式的值就变成 11111……11111 01011010
(~a)>>4表达式的值就变成 11111……11111 11110101
强转为 unsigned char 就是 11110101


~(a>>4)
a的值为10100101,a表达式值为 00000……00000 10100101
a>>4表达式的值就变成 00000……00000 00001010
(~a)>>4表达式的值就变成 11111……11111 11110101
强转为 unsigned char 就是 11110101

懂啦懂啦~谢谢,还想问一下~和>>的优先级哪个高啊?应该是~ 吧?我在一个面试的书里面说>>的优先级比~高
1