【程序员面试宝典】强制类型转换之面试例题2
题目:
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相关推荐
- Java高级程序员(5年左右)面试的题目集
Java高级程序员(5年左右)面试的题目集 https://blog.csdn.net/fangqun663775/article/details/73614850?utm_source=blogxg ...
- 匆匆那年之Java程序员之最近两周的面试总结:
匆匆那年之Java程序员之最近两周的面试总结: (一):匆匆那年之来帝都之初: 还记得那是2011年的冬天,我们一行20多个同学一起来到了这个一直向往的城市首都,刚到北京是凌晨4点30,负责送我们的老 ...
- 程序员如何搞定前端高频面试难题?附答案汇总 | 技术头条
作者 | 木易杨 责编 | 伍杏玲 第 1 题:简单讲解一下 HTTP2 的多路复用 在 HTTP/1 中,每次请求都会建立一次TCP连接,也就是我们常说的3次握手4次挥手,这在一次请求过程中占用了相 ...
- @程序员,拒绝无聊的代码面试!
要判断一个人是不是优秀的程序员,不一定非要看他的代码. 过去十多年里,我面试了许多工程师.在那段时间里,我总结了一系列的方法,可以在不看代码的情况下快速准确地评价一名开发人员. 而我现在认为,这些方法 ...
- Java程序员福音:349页阿里面试通关手册,助我闯进字节跳动
前言 今年的面试比往年要难得多,各个互联网企业对于Java岗位的要求越来越多,也越来越高,主要是初级岗位已经趋近饱和,但高级岗位又相对来说缺乏,这类的人才偏少,因此作为Java开发人员,我们应该思考的 ...
- java匿名对象赋初值_不想进BAT的Java程序员不是好程序员,BAT后端Java岗面试真题分享
一. JDK/JRE/JVM 三者之间的联系与区别 JDK:开发者提供的开发工具箱,是给程序开发者用的.它包括完整的JRE(Java Runtime Environment),Java运行环境,还包含 ...
- iqn怎么查 linux_程序员必备:46个Linux面试常见问题!收藏!
不少程序员在面试的时候被问及Linux的一些问题的时候容易蒙,尤其是常用windows系统的程序员.但是有的公司就想通过面试来测试你对后期或者对系统的掌握程度,会给你加几道linux的面试问题. 问题 ...
- 面向Java程序员的20大Spring REST面试问题答案
大家好,过去两周来,我一直在与Spring教程共享一些REST,今天,我将向申请Web开发人员角色的Java开发人员共享一些常见的Spring和REST面试问题. 由于Spring Framework ...
- HR怎么从面试中了解程序员的真实水平?需要面试的程序员,注意了!
HR肯定不懂或至少不太懂专业技术,这点,是一定的. 一个外行,怎么面试内行,很多求职者会很好奇. 其实,HR初试,更多的是看"人怎么样",对"能力行不行"的观察 ...
- oracle存储过程如何传递一个bean对象_java程序员如何在短期内抓住面试重点,成为大厂offer收割机...
前言: 你也许能说出一万个不知道原理源码也能胜任工作的理由.但是也改变不了,高质量的人才必须要通过原理源码来筛选的事实! 不要抱怨没有时间学习,去年到今年,一年时间过去了,你是没时间学习,还是有时间也 ...
最新文章
- 线段树扫描线求矩形周长详解
- Comparison of long-read sequencing technologies in the hybrid assembly of complex bacterial genomes
- Java实现简单的RPC框架
- a king读后感 love of the_读后感kinglear
- Python数据库访问公共组件及模拟Http请求
- 使用代码删除Acquisition contract上指定IP的right scope
- HTML入门第一和第二章
- python网络爬虫_python小知识,基于Python 的网络爬虫技术分析
- HTML5设备API 大批美女等你来摇一摇
- Mysql数据库——数据表的优化、外键与三范式
- GreenPlum数据库调研及架构介绍
- Laravel 使用百度地图实现地理位置转经纬度
- 计算机网络电子邮件的格式,电子邮件的格式是什么
- 《近匠》专访启明星辰安全研究中心副总监侯浩俊——物联网安全攻防的“线上幽灵”
- PCL教程-使用CloudViewer类实现简单点云可视化
- 推荐几本学习Java的教材
- ntoskrnl.exe(01)
- [C++11 多线程同步] --- 线程同步概述
- 遥感数字图像处理——原理与方法(朱文泉,林文鹏编著)
- 计算机网络时间同步(时钟同步)的重要性
热门文章
- python动态柱状图_python – 在Jupyter中使用plotly以离线模式创建动画图表
- Linux服务器集群系统(一)—— LVS(Linux Virtual Server)简介
- 项目管理各管理内部重点
- activeMQ使用总结
- Time to First Byte(TTFB)与Web性能优化
- Leaflet快速入门与加载OSM显示地图
- ElementUI中的el-table怎样实现每一列显示的是控件并能动态实现双向数据绑定
- Java中使用Jedis连接Redis数据库流程
- GIt版本回退还不会用?轻松学会不怕失误
- SpringDataJpa开发--继承JpaRepository实现简单条件查询