您的位置:首页 > 编程语言 > C语言/C++

经典问题3:c/c++ 程序设计 ---类型转换问题

2010-09-28 09:33 405 查看
-------------------------------------------------------------------

经典问题3:c/c++ 程序设计 ---类型转换问题

-------------------------------------------------------------------

1)面试题:下面程序的结果是多少?

1 #include <iostream>

2 using namespace std;

3

4 int main()

5 {

6 unsigned char a=0xA5;

7 unsigned char b=~a>>4;

//a>>4=>00001010;~a=>11110101;(int)b=245

8 std::cout <<"b="<<(int)b<<endl;

//b=245 非显示字符;不能显示,应加(int);

9 printf("b=%d /n",b);

10 return 0;

11 }

------------

$ ./a.out

b=245

b=245

------------

知识点:-、类型转换问题;二、算符的优先级问题

---------------------

扩展:

unsigned char a = 0xa5,b;

b=a*5

1#include <iostream>

2 using namespace std;

3

4 int main()

5 {

6 unsigned char a=0xa5;

7 unsigned char b=a*2; //a*2>255;类型提升int,计算结果最后8位给b;

8 std::cout <<"b="<<(int)b<<endl;

9 printf("b=%d /n",b);

10 return 0;

11 }

--------------

$ ./a.out

b=74 // 165*2 -256 =74

b=74

--------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: