博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题:强制类型转换
阅读量:4133 次
发布时间:2019-05-25

本文共 944 字,大约阅读时间需要 3 分钟。

题目:

下面程序结果是多少?

(一)

#include 
#include
#include
#include
using namespace std;int main(){ float a=1.0f; cout<<(int)a<
解析:该题实质上是考察了数据在内存中的
存储方式以及
数据的表示,是计算机组成原理中的内容

该题核心主要是对(int &)a的理解:

对于(int )a:这一点大家都知道,就是a的强制转化成int型,考察的是存储方式的内容

对于(int &)a:将a的引用强制转化成整型,意思是a所在的内存本来定义的时候为float类型,初始化为1.0f,但现在要按int类型解释这段程序,相当于*(int *)&a(将a的地址强制转化成int型指针,再取其内容)

(二)

#include 
int main(){ unsigned int a=0xfffffff7; unsigned char i=(unsigned char)a; char *b=(char*)&a; printf("%08x, %08x",i,*b); return 0;}
第一个数i不用说了,char *b=(char *)&a其意思就是将一个unsigned int型的指针强制转化成一个char型的指针,只是指针的转化,影响的是指针的寻址,我们知道一个unsigned int型指针指向的地方寻址范围是从这个指针地址开始向后sizeof(unsigned int)=4字节,所以当转化成char型指针后,其寻址范围是从此地址开始向后sizeof(char)=1字节,运行一下下面的程序就会明白了

#include 
int main(){ unsigned int a=0xfffffff7; unsigned char i=(unsigned char)a; unsigned int *p=&a; char *b=(char*)p; printf("%08x, %08x",(++p),(++b)); return 0;}

转载地址:http://pcvvi.baihongyu.com/

你可能感兴趣的文章
hadoop MapReduce实例解析
查看>>
EXTJS GRID分页时序号自增的实现
查看>>
Hadoop-2.2.0集群安装配置实践
查看>>
eclipse 配置maven web项目
查看>>
Eclipse+Maven创建webapp项目<一>
查看>>
Eclipse+Maven命令创建webapp项目<三>
查看>>
Eclipse+Maven创建webapp项目<二>
查看>>
Maven笔记(四)– eclipse+tomcat构建web工程
查看>>
Spring Security 3.x 完整入门教程
查看>>
Spring3+Hibernate4+SpringMVC整合Ext:JSON数据格式传输
查看>>
用Artifactory管理内部Maven仓库
查看>>
ExtJs4 笔记 layout 布局
查看>>
VMware虚拟机配置Ubuntu桥接方式(Bridged)使虚拟机和宿主机能互相ping通
查看>>
Apache Hadoop 2.2.0 HDFS HA + YARN多机部署
查看>>
Hadoop2.4.1部署(完整版)
查看>>
Hadoop2.2.0 NN HA详细配置+Client透明性试验【完整版】
查看>>
NN HA 对于 Client 透明的实验
查看>>
Hadoop 2.0.0-cdh4.5.0安装
查看>>
自己用
查看>>
...
查看>>