C语言拾遗:(int)a、&a、(int)&a、(int&)a的区别
2014-04-24 10:28
232 查看
转自:http://wenku.baidu.com/link?url=3QUbJp4Yk4dLsqR8ekgcp0jBS7wtbjvrMXc4EEgbXH7AfDXvNmG6pubOvR8ydVaveXHeOcb4CEmf6X7lEvy0glX9WKbHvKVnK6Q8UFmC2je
#include <iostream> #include <stdio.h> #include <string.h> #include <conio.h> using namespace std; int main() { float a = 1.0f; cout << sizeof(int) <<endl;//4 cout << sizeof(float) <<endl;//4 cout << (int)a << endl;//1 cout << &a << endl; /*取a的地址十六进制0012FF7C*/ cout << (int)&a << endl;/*(int)&a:把a的地址强制转换成十进制的整型1245052*/ cout << (int&)a << endl; /*(int&)a:将a的引用强制转换为整型,意思是a所在的内存, 但现在我要按int类型解释这段内存 (也就是说a所在的内存地址中的数据本来是按float型存储表示的, 你非要按int型来解释不可)。 1.0f 在内存中的存储为 0 011 1111 1 000 0000 0000 0000 0000 0000. 把他按整型数解释为 2^29+2^28+2^27+2^26+2^25+2^24+2^23=1065353216 (int&)a 相当于 *(int*)&a *(int*)(&a) *((int*)&a) */ cout << boolalpha << ((int)a == (int&)a ) << endl; // 输出false.因为1!=1065353216. float b = 0.0f;
相关文章推荐
- (int&)a和(int)a的区别 - c语言
- C语言拾遗:常量指针与指针常量(const int *ptr, int const *ptr, int * const ptr, const int * const ptr区别)
- C语言的 &数组名 和 数组名的区别
- C语言的.和->的区别
- int *pa(指针)和int *&pa(指针的引用)的区别
- C语言主函数返回值问题:return type of 'main' is not 'int' [-Wmain]
- c语言中unsigned int和int的区别
- C语言中Node * a,和Node* &a的区别
- c语言那些细节之a+1和&a+1的区别
- c语言中int *p[4]和 int (*)p[4]区别
- void f(int(&p)[3]){} 和void f(int(*p)[3]){}的区别
- C语言拾遗:static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- (int&)a和(int)&a的区别
- C语言,指针变量的*p,p以及&p的区别
- 巩固C语言(八)----进程和线程的区别和练习 & 线程编程
- (int*) 和 (int&)的区别
- (int&)a和(int)a的区别
- 在C语言头文件中“”与<>有什么区别?
- [JAVA · 初级]:2.变量 & Integer和int的区别
- (int&)a和(int)a的区别