(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++学习书籍,它深入浅出地介绍了C++编程语言的基础和高级特性。课后习题是学习过程中不可或缺的一部分,它们旨在帮助读者巩固理论知识,提高实际编程技能。这个压缩包...
《C++ Primer Plus 第六版》是一本深受程序员喜爱的C++学习书籍,它深入浅出地介绍了C++编程语言的基础知识和高级特性。作为学习过程中不可或缺的一部分,课后习题是检验和巩固所学知识的关键。这本书的第六版课后...
### C++ Primer 第五版习题答案解析 #### Exercise 1.1 **题目描述:** 审查您的编译器文档并确定它使用的文件命名...以上是针对C++ Primer第五版部分习题的详细解析,希望能帮助读者更好地理解和掌握C++的基础知识。
C++ Primer中&、*符号的多重定义与int *p和int* p的区别讲解 C++ Primer中,&和*符号具有多重定义,它们可以用作表达式里的运算符,也可以作为声明的一部分出现。符号的上下文决定了符号的意义。在声明语句中,&和*...
《C++ Primer 习题解答(第4版)》是一本深入C++编程语言的实践指导书籍,由Lippman, Lajoie, 和 Moo三位专家编写。这本习题解答是针对C++ Primer(第四版)教材的,旨在帮助读者巩固和深化对C++的理解。在学习C++的...
但是,我可以根据《C++ Primer》第五版的内容结构以及一般C++的学习顺序,为读者提供第12章可能涵盖的知识点,并对C++11标准中的相关概念进行介绍。 第12章通常会涉及C++中的输入输出库(I/O库),这是C++编程中必...
《C++ Primer》第五版是C++领域内极具权威...总之,《C++ Primer》第五版通过上述的习题和答案,为读者提供了一条系统的C++学习路径,既注重理论知识的讲解,又强调实践技能的锻炼,是学习C++语言不可或缺的重要资源。
《C Primer Plus 附录A 复习题答案》提供了对C语言基础知识的全面回顾和解答,是学习C语言过程中的重要参考资料。本附录涵盖了C语言的关键概念、语法和编程技巧,旨在帮助读者巩固对C语言的理解,提高编程能力。 在...
6. C++标准库:文件提到了C++标准库类型,如标准输入输出库,标准库类型在C++程序中提供了一系列基础的工具和功能,如输入输出流、标准容器、泛型算法等。 7. 关键概念理解:文件内容中还包含了对一些关键概念的...
《谭浩强C++》是针对初学者的一本经典教材,C++ Primer则是另一本深入讲解C++语言的专业书籍。这个压缩包包含了这两本书中的一些课后习题解答和简单的C++控制台程序示例,对于正在学习C++的你来说,是一个非常有价值...
《C++ Primer Plus 第6版 中文版》是一本深入浅出的C++学习书籍,其课后代码习题答案是学习过程中不可或缺的部分。这本书旨在帮助读者从零基础开始掌握C++编程语言,通过实例和习题来巩固理论知识,提升编程技能。...
此为C++ Primer第5版课后习题,讲解很全,很值得学习者在学习C++时 ,跑一跑书本上的代码,加深学习印象!
基于给定文件的信息,我们可以详细地探讨C++ Primer第二章中的关键知识点,这些知识点主要涉及变量类型、数据表示以及常量等基础概念。 ### C++ Primer 第2章知识点详解 #### 1. 整型变量及其类型差异 - **int、...
C++ Primer编程习题集(第5版),有习题和编程代码,供自我检验使用
《C++ Primer(第4版)》是一本深入学习C++编程语言的经典教材,其课后习题答案提供了丰富的实践练习和问题解析,帮助读者巩固并深化对C++语法、概念的理解。以下将针对各章节的主要知识点进行详细阐述: 1. 第一章...
《C++ Primer 5th Edition》是一本广受赞誉的C++编程教程,由Lippman、Lajoie和 Moo三位作者共同编写。这本教材深入浅出地介绍了C++语言,适合初学者和有一定经验的程序员。"C++ primer 5e"标签明确了我们讨论的是...
- 变量与数据类型:C++支持基本数据类型如int、char、float等,以及自定义的数据结构如结构体和联合体。 - 运算符:包括算术运算符、比较运算符、逻辑运算符、赋值运算符等,还有C++特有的操作符重载。 - 控制流...
1. **基础概念**:在C++ Primer中,首先会接触到基本的语法元素,如变量(包括不同类型的变量,如int、double、char等)和运算符(如算术运算符、比较运算符、逻辑运算符等)。通过解决这部分的练习题,你可以熟悉...