(int)a与(int&)a

int main(){
    float a = 1.0f;
    cout << (int)a << endl;
    cout << (int&)a << endl;
    cout << boolalpha << ((int)a == (int&)a) << endl;
    float b = 0.0f;
    cout << (int)b << endl;
    cout << (int&)b << endl;
    cout << boolalpha << ((int)b == (int&)b) << endl;
}
1
1065353216
false
0
0
true

(int)a实际上是以浮点数为参数构造了一个整型数,值为1,(int&)a告诉编译器将a当作整数看,因为1以整数形式存放与以浮点形式存放,内存数据不一样,故两者不等。1065353216(16进制为0x0000803F)表示在浮点数形式中占据的内存单元中的值,而使用int&则是告诉上下文,不管原来是什么,现在以整数来看待。

posted @ 2016-08-31 15:19  绿水白川  阅读(289)  评论(0编辑  收藏  举报