(int)a是什么意思
(int&)a是什么意思 http://www.cnblogs.com/CBDoctor/archive/2012/08/19/2646171.html
在《程序员面试宝典》有这样一道题目:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <iostream>
#include <string>
using namespace std;
int _tmain( int argc, _TCHAR* argv[])
{
float fa = 1.0f;
cout<<&fa<<endl; //0x0012ff60
cout<<( int )fa<<endl; //1
cout<<( float &)fa<<endl; //1
cout<<*(( float *)(&fa))<<endl; //1
cout<<( int &)fa<<endl; //1065353216
return 0;
}
|
里面出现了一个很奇怪的输出形式就是(int&)a.
其实,(int&)a就是*(int*)(&a)
- 首先对float型变量取地址
- 强制类型转换为整型变量的地址(地址的值并没有变)
- 将该地址指向的变量输出(但是由于整型和浮点型数据存储方式的不同,输出结果是不同的)
下面说一下整型变量和浮点型变量的存储区别:
下面以浮点数125.5为例来说明:
125二进制表示形式为1111101,小数部分表示为二进制为 1,则125.5二进制表示为1111101.1,由于规定尾数的整数部分恒为1,则表示为1.1111011*2^6,阶码为6,加上127为133,则表示为10000101,而对于尾数将整数部分1去掉,为1111011,在其后面补0使其位数达到23位,则为11110110000000000000000
则其二进制表示形式为
0 10000101 11110110000000000000000,则在内存中存放方式为:
- 00000000 低地址
- 00000000
- 11111011
- 01000010 高地址
-------------------------------------------------------------
对于将一个浮点型数据(double)赋值给整型数据(int)是怎样截断的?
float fa = 1.0f;
cout<<(int)fa<<endl;//1
所以只保留低位的数据
(int)a是什么意思相关推荐
- Thinking In C++中文版
下载 第1章 对象的演化 计算机革命起源于一台机器,程序设计语言也源于一台机器. 然而计算机并不仅仅是一台机器,它是心智放大器和另一种有表述能力的媒体.这一点 使它不很像机器,而更像我们大脑的一部分 ...
- c语言long int表示范围_C语言编程第9讲——这些C语言整数类型的知识点你掌握了吗...
1.char其实是一种整数类型 在C语言中,字符使用整数来表示. 例如下面的代码: #include int main(){ char letter = '2'; printf("Lette ...
- C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明
带形参的 main 函数,如 int main( int argc, char* argv[], char **env ) 是 UNIX .Linux 以及 Mac OS 操作系统中 C/C++ 的 ...
- java 无法取消引用_Java的新手,并出现错误“无法取消引用int” - java
我是java的新手,并且已经从事了一段时间,但是仍然收到错误消息:无法取消引用int.我看到了几个类似的问题,但仍然无法弄清自己的情况. 这是完整的代码: package inclass; class ...
- python 把int类型转bytes以及把bytes 转int 类型(使用方法to_bytes ,from_byte, struct)
把int类型转bytes 方法1 使用方法to_bytes to_bytes 方法里面有3个参数 , 第一个数是指定要转换的bytes占多少个字节 第二个是byteorder 是指定大端或者是小端 的 ...
- TypeError: sequence item 1: expected str instance, int found
报错具体内容如下: 这里 是使用re.sub() 函数的时候 ,里面的第二个参数必须是string 类型, 我这里使用int 类型所以就报错了 处理方法就是把 int 类型数据转成string 类型的 ...
- ValueError: invalid literal for int() with base 10: “ ”
出现这个错误 :ValueError: invalid literal for int() with base 10: '' " 或者: ValueError: invalid liter ...
- TypeError: ord() expected string of length 1, but int found
错误如下 ord 里面要求的是一个string 的字符, 这里使用了int ,所以修改了print(ord("1")) 转ASCII 的时候需要注意了,
- BigDecimal 转换为int 或者其他类型
我列举了转换的方法 BigDecimal HALF_UP = new BigDecimal("-12.44").setScale(1, RoundingMode.HALF_UP); ...
- public static final int REMIN_REQUEST_CODE = 0x911 自己的大致理解
public static final int REMIN_REQUEST_CODE = 0x911; 自己理解为 一个静态常量,也就一个标识,自己目前主要在2个地方常用到 OnActivityRes ...
最新文章
- 图论(九)最小生成树-Kruskal算法
- 计算机科学课程体系核心内容,计算机科学教育的课程体系之研究
- [FreeBSD]x86地址映射实例
- 什么是jsf_为什么应该避免JSF
- python作用域——LEGB规则
- Eureka心跳续约机制
- 数据库 一致性读当前读
- Zookeeper脑图
- 哈佛结构 Linux,哈佛结构与冯诺依曼结构区别
- word段落居中的快捷键_Word一分钟完成人员名单排版,这方法又快又好!
- 宗成庆《统计自然语言处理》 目录的思维导图
- JUCE框架教程(3)—— Component ClassGraphics入门
- 幼儿园数学目标_幼儿园数学教育的总目标包括哪些
- 【论文笔记-5】Spatial Transformer Networks(STN)
- 从威胁到整合,容器将改变openstack的未来?
- 7-154 置点不动产——认真学习,努力工作买买房子吧
- 解析USGS网站页面中的地震空间数据
- 利用傅里叶变换获取低频和高频部分图像
- 电商项目超详细测试点整理(一)
- 网站添加用户风险测评