首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类型转换中强制转换int与(int&)的区别,求大侠指点,该怎么处理

2012-03-18 
类型转换中强制转换int与(int&)的区别,求大侠指点#includeiostream#includestdio.h#includestring.h

类型转换中强制转换int与(int&)的区别,求大侠指点
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<conio.h>

using namespace std;

int main()
{
  float a = 1.0f;
  cout<<(int)a<<endl;
  cout<<&a<<endl;
  cout<<(int&)a<<endl;  
  cout<<boolalpha<<((int)a == (int&)a)<<endl;


  float b = 0.0f;
  cout<<(int)b<<endl;
  cout<<&b<<endl;
  cout<<(int&)b<<endl;
  cout<<boolalpha<<((int)b == (int&)b)<<endl;
 
  return 0;
}

[解决办法]
(int) -强制转换成 int类型 (int&)-强制转换成int引用类型
[解决办法]
http://topic.csdn.net/u/20070618/15/64bf9e83-c422-43aa-a451-5deed812e947.html
[解决办法]
(int&)b 相当于 *(int*)&b
[解决办法]
一个有临时对象生成,一个没有。强制转换为int的有,强制转换为Int&没有
[解决办法]
(int)a时有对浮点到整形的转换
(int&)a时,直接吧内存中的数据当做整型操作了~

[解决办法]
http://blog.csdn.net/supermegaboy/article/details/7038327

看其中的例子CDEFG。
[解决办法]
(int)a 是有一个临时变量在中间转化,把float转成int输出。

 (int &)a 是相当于 *(int*)&a;
  
int 和 float 在c++中都是4字节,(int &)a 就相当于用int型直接读出了内存中的数据。

float 和 int 类型在内存中存储的方式不同,所以读出来就会有差异。关于各类型的存储方式可参考:
http://blog.csdn.net/qingkong8832/article/details/6687793

热点排行