(1)首先通过一个例子看(int)和(int&)的区别:
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl; // boolalpha 用符号形式表示真假
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl;
<wbr></wbr>
输出:
1
1065353216
false
0
0
true
<wbr></wbr>
解释:
(int)a实际上是以浮点数a为参数构造了一个整型数,该整数的值是1;
(int&)a则是告诉编译器将a当作整数看(并没有做任何实质上的转换)
因为1以整数形式存放和以浮点形式存放其内存数据是不一样的,因此两者不等。
但是0的整数形式和浮点形式其内存数据是一样的,因此在这种特殊情形下,两者相等(仅仅在数值意义上)。
注意:
程序的输出会显示(int&)a=1065353216,这个值是怎么来的呢?前面已经说了,1以浮点数形式存放在内存中,按ieee754规定,其内容为0x0000803F(已考虑字节反序)。这也就是a这个变量所占据的内存单元的值。当(int&)a出现时,它相当于告诉它的上下文:“把这块地址中的内容当做整数看待!不要管它原来是什么。”这样,内容0x0000803F按整数解释,其值正好就是1065353216(十进制数)。
通过查看汇编代码可以证实“(int)a相当于重新构造了一个值等于a的整型数”之说,而(int&)的作用则仅仅是表达了一个类型信息,意义在于为cout<<及==选择正确的重载版本。
<wbr></wbr>
(2)(int*)是将一个变量(此变量不能是浮点型,可以是整型、字符、指针)以地址的形式显示,和(int&)的原理一样,当(int&*)a出现时,它也相当于告诉它的上下文:“把这块地址中的内容当做一个地址看待!不要管它原来是什么。”
例如:
char p='a';
cout<<(int)p<<endl;
cout<<(int*)p<<endl;
<wbr></wbr>
输出:
97
00000061 //97的十六进制数
<wbr></wbr>
这在输出字符数组的首地址时十分有用:
char *p="abcd";
cout<<(int*)p<<endl;
<wbr></wbr>
否则cout<<p<<endl;
输出的是abcd,而不是其首地址。
分享到:
相关推荐
这个文件是我买的资料。我看过,和C++ primer plus 这本书的课后习题非常吻合。
C++Primer第五版习题答案+详解(完整版) C++Primer第五版习题答案+详解(完整版)
C++primer 课后答案,习题对帮助记忆、理解很重要。内容高清,全面,带有书签,
谭浩强C++ c++primer 课后题答案代码 和很多c++控制台小程序 适合初学者
c++primer第五版中文版课后答案(第12章)pdf格式,真正的c++primer习题集(第五版),用手机拍的,但是每个字都能看的很清楚
& 和*这样的符号,既能用作表达式里的运算符,也能作为声明的一部分出现,符号的上下文决定了符号的意义: int i = 42; int &r = i; //&紧随类型名出现,因此是声明的一部分,r是一个引用 int *p; //*紧随类型名出现...
C++ Primer 第五版(中文版) 第1~11章课后习题答案(附上代码)
此为C++ Primer第5版课后习题,讲解很全,很值得学习者在学习C++时 ,跑一跑书本上的代码,加深学习印象!
C++ Primer第四版习题(完整版) C++ Primer第四版习题(完整版)
C++Primer(第4版)_课后习题答案
C++ Primer课后习题答案 本书试图成为C++ Primer(第 4 版)的配套书籍,根据C++ Primer(第 4 版) 中所介绍的内容提供配套习题的解答,书中所给出的“见 xx 节”,均指参见C++ Primer(第 4 版)的相应章节。
c++ primer 的习题答案,你学习c++的最好教材。
c++ primer plus 答案c++ primer plus 答案c++ primer plus 答案c++ primer plus 答案 c++ primer plus 答案
C++Primer Plus第六版的课后题练习题
C++primer 课后题答案 目录 第一章 快速入门 2 第二章 变量和基本类型 7 第三章 标准库类型 13 第四章 数组和指针 21 第五章 表达式 31 第六章 语句 37 第七章 函数 37 第八章 标准IO库 37 第九章 顺序容器 43 第十...
C++Primer 习题解答(第4版),这份资料现在在网上找完整版非常困难,很多都只是一部分习题解答,现把我收藏的这份完整电子版给大家分享下,希望对大家有所帮助!!
C Primer Plus 附录A 复习题答案
c++primer第五版中文版课后答案(第17章)pdf格式,真正的c++primer习题集(第五版),用手机拍的,但是每个字都能看的很清楚
C++primer4&课后答案&C++ reference
自己看书练习编写的C++ Primer Plus(第6版)课后题答案