int与int&的区别

来源:百度知道 编辑:UC知道 时间:2024/05/15 11:09:37
今天看书刚看到的,不懂,也没看出什么区别,高手指教一下,越详细越好,引申一下就更好了,不吝啬分
不是强制转换,注意!!!

转:

(int)a实际上是以浮点数a为参数构造了一个整型数,该整数的值是1,(int&)a则是告诉编译器将a当作整数看(并没有做任何实质上的转换)。因为1以整数形式存放和以浮点形式存放其内存数据是不一样的,因此两者不等。对b的两种转换意义同上,但是0的整数形式和浮点形式其内存数据是一样的,因此在这种特殊情形下,两者相等(仅仅在数值意义上)。
注意,程序的输出会显示 (int&)a=1065353216,这个值是怎么来的呢?前面已经说了,1以浮点数形式存放在内存中,按ieee754规定,其内容为 0x0000803F(已考虑字节反序)。这也就是a这个变量所占据的内存单元的值。当(int&)a出现时,它相当于告诉它的上下文:“把这块地址当做整数看待!不要管它原来是什么。”这样,内容0x0000803F按整数解释,其值正好就是1065353216(十进制数)。
通过查看汇编代码可以证实“(int)a相当于重新构造了一个值等于a的整型数”之说,而(int&)的作用则仅仅是表达了一个类型信息,意义在于为cout<<及==选择正确的重载版本。

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

输出:

1
1065353216
0

int 是指整型
int& 是指引用的整型,是指代本身的,指针能做的都能做
如果要换两个数,就要用引用了
详细的你参考引用的用法吧

CInt 会进行四舍五入取最接近它的偶数,也就是说当小数部分为0.5XXXX时,它会取最接近X.5XX的偶数.

如 Cint(0.5)=0 ; Cint(1.5)=2 ; Cint(2.5)=2 ;Cint(3.5)=4

而Int就是取整函数,会去除小数点部分.如 Int(1.5)=1 ...