查看文章
 
c++运算符优先级问题
2009-08-13 11:22

    今天看程序员面试宝典发现了一个问题。在P37的例子中,宝典认为>>比~的优先级高。这是错误的。实际上~比>>的优先级高。程序代码如下:

#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;
}

这是台网某CPU公司的面试题。程序输出结果是245。虽然认为>>优先级高于~能得出正确的结果,但是我们应该找到正确的原因。

因为unsigned char和char类型变量在参与运算的时候,会首先被提升为int类型,计算完毕再转换成unsigned char 或char类型。从这个正确的角度,就可以得到正确的结果。

我们可以用以下代码进行验证。

char a=0x15;
int b=~a;
printf("b=%08x\n",b);


类别:c++语言||添加到搜藏 |分享到i贴吧|浏览(142)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu