题目:

void main()
{  unsigned int a = 0xFFFFFFF7;  unsigned char i = (unsigned char)a;  char* b = (char*)&a;  printf("%08x, %08x\n", i, *b);
}  

输出:

000000f7, fffffff7

(1)i的输出的解释:

unsigned char仅占一个字节,对int型的a进行截断。

字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。

小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;

大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。

基于X86平台的PC机是小端字节序的

基于以上理论可知,截断时,i会获得低字节数据F7。由于是无符号的,要求输出8位,则填充为000000F7才输出。

(2)*b的解释:

指针类型的转换,而非char类型的转换。

先看下面一个例子:

unsigned int a = 0XAAAAAAA7;
unsigned char i = (unsigned char)a;
char * b = (char*)&a;
unsigned char* c = (unsigned char*)&a;
printf("%08x, %08x, %08x, %08x\n", a, i, *b, *c);
printf("%x, %x, %x, %x\n", a, i, *b, *c);

输出:

可见,输出与前六位无关,说明发生了截断。

具体解释如下:

(char*)&a 将a的地址转换成一个char型指针,和(int*)&a 转换成一个int是不同的,它只会指向&a的低8位内存,其余的发生了截断。

所以 现在b指向的是0xf7, 这是一个负数,使用%08x 输出 就是ffffffff7.

参考:

http://blog.csdn.net/zhanghenglei/article/details/7330365

http://www.cppblog.com/aaxron/archive/2011/02/28/140786.aspx

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/wangicter/archive/2012/08/26/4767315.html

【程序员面试宝典】强制类型转换之面试例题2相关推荐

  1. Java高级程序员(5年左右)面试的题目集

    Java高级程序员(5年左右)面试的题目集 https://blog.csdn.net/fangqun663775/article/details/73614850?utm_source=blogxg ...

  2. 匆匆那年之Java程序员之最近两周的面试总结:

    匆匆那年之Java程序员之最近两周的面试总结: (一):匆匆那年之来帝都之初: 还记得那是2011年的冬天,我们一行20多个同学一起来到了这个一直向往的城市首都,刚到北京是凌晨4点30,负责送我们的老 ...

  3. 程序员如何搞定前端高频面试难题?附答案汇总 | 技术头条

    作者 | 木易杨 责编 | 伍杏玲 第 1 题:简单讲解一下 HTTP2 的多路复用 在 HTTP/1 中,每次请求都会建立一次TCP连接,也就是我们常说的3次握手4次挥手,这在一次请求过程中占用了相 ...

  4. @程序员,拒绝无聊的代码面试!

    要判断一个人是不是优秀的程序员,不一定非要看他的代码. 过去十多年里,我面试了许多工程师.在那段时间里,我总结了一系列的方法,可以在不看代码的情况下快速准确地评价一名开发人员. 而我现在认为,这些方法 ...

  5. Java程序员福音:349页阿里面试通关手册,助我闯进字节跳动

    前言 今年的面试比往年要难得多,各个互联网企业对于Java岗位的要求越来越多,也越来越高,主要是初级岗位已经趋近饱和,但高级岗位又相对来说缺乏,这类的人才偏少,因此作为Java开发人员,我们应该思考的 ...

  6. java匿名对象赋初值_不想进BAT的Java程序员不是好程序员,BAT后端Java岗面试真题分享

    一. JDK/JRE/JVM 三者之间的联系与区别 JDK:开发者提供的开发工具箱,是给程序开发者用的.它包括完整的JRE(Java Runtime Environment),Java运行环境,还包含 ...

  7. iqn怎么查 linux_程序员必备:46个Linux面试常见问题!收藏!

    不少程序员在面试的时候被问及Linux的一些问题的时候容易蒙,尤其是常用windows系统的程序员.但是有的公司就想通过面试来测试你对后期或者对系统的掌握程度,会给你加几道linux的面试问题. 问题 ...

  8. 面向Java程序员的20大Spring REST面试问题答案

    大家好,过去两周来,我一直在与Spring教程共享一些REST,今天,我将向申请Web开发人员角色的Java开发人员共享一些常见的Spring和REST面试问题. 由于Spring Framework ...

  9. HR怎么从面试中了解程序员的真实水平?需要面试的程序员,注意了!

    HR肯定不懂或至少不太懂专业技术,这点,是一定的. 一个外行,怎么面试内行,很多求职者会很好奇. 其实,HR初试,更多的是看"人怎么样",对"能力行不行"的观察 ...

  10. oracle存储过程如何传递一个bean对象_java程序员如何在短期内抓住面试重点,成为大厂offer收割机...

    前言: 你也许能说出一万个不知道原理源码也能胜任工作的理由.但是也改变不了,高质量的人才必须要通过原理源码来筛选的事实! 不要抱怨没有时间学习,去年到今年,一年时间过去了,你是没时间学习,还是有时间也 ...

最新文章

  1. 线段树扫描线求矩形周长详解
  2. Comparison of long-read sequencing technologies in the hybrid assembly of complex bacterial genomes
  3. Java实现简单的RPC框架
  4. a king读后感 love of the_读后感kinglear
  5. Python数据库访问公共组件及模拟Http请求
  6. 使用代码删除Acquisition contract上指定IP的right scope
  7. HTML入门第一和第二章
  8. python网络爬虫_python小知识,基于Python 的网络爬虫技术分析
  9. HTML5设备API 大批美女等你来摇一摇
  10. Mysql数据库——数据表的优化、外键与三范式
  11. GreenPlum数据库调研及架构介绍
  12. Laravel 使用百度地图实现地理位置转经纬度
  13. 计算机网络电子邮件的格式,电子邮件的格式是什么
  14. 《近匠》专访启明星辰安全研究中心副总监侯浩俊——物联网安全攻防的“线上幽灵”
  15. PCL教程-使用CloudViewer类实现简单点云可视化
  16. 推荐几本学习Java的教材
  17. ntoskrnl.exe(01)
  18. [C++11 多线程同步] --- 线程同步概述
  19. 遥感数字图像处理——原理与方法(朱文泉,林文鹏编著)
  20. 计算机网络时间同步(时钟同步)的重要性

热门文章

  1. python动态柱状图_python – 在Jupyter中使用plotly以离线模式创建动画图表
  2. Linux服务器集群系统(一)—— LVS(Linux Virtual Server)简介
  3. 项目管理各管理内部重点
  4. activeMQ使用总结
  5. Time to First Byte(TTFB)与Web性能优化
  6. Leaflet快速入门与加载OSM显示地图
  7. ElementUI中的el-table怎样实现每一列显示的是控件并能动态实现双向数据绑定
  8. Java中使用Jedis连接Redis数据库流程
  9. GIt版本回退还不会用?轻松学会不怕失误
  10. SpringDataJpa开发--继承JpaRepository实现简单条件查询