cout<<hex<<u.i<<endl 《程序员面试宝典》的一道union题目
来源:互联网 发布:怎么选择打印机端口 编辑:程序博客网 时间:2024/06/08 22:41
#include <iostream>
using namespace std ;
union{
}u;
void main()
{
}
输出结果:
f0f1f2f3
f3
------------------------------------------------------------------------------------------------------------------
需要记住:UNION是一个联合体,各个成员共用空间,占用的空间等于其中占用空间最大的成员的SIZE。
又因为:
内存中数据低位字节存入低地址,高位字节存入高地址,而数据的地址采用低地址来表示。
所以,u.i占了整个四个字节,而u.a只占了最低位的一个字节。所以u.a是0xf3.
--------------------------------------------------------------------------------------------------------------------------
应用,现在实验一下:
u.a = 'A';
然后再输出:
f0f1f2f3
f3
结果不变,这是因为虽然a赋值了,但是被后面赋值的i给覆盖了。
----------------------------------------------------------------------------------------------------------------------------
再变一下,假设变为:
u.i = 0xf0f1f2f3;
那么结果则是:
f0f1f24141
是因为a后来的赋值覆盖了i之前的赋值的低字节,A的十六进制是41,所以输出41.
- cout<<hex<<u.i<<endl 《程序员面试宝典》的一道union题目
- cout<<hex<<u.i<<endl 《程序员》的一道union题目
- 关于《程序员面试宝典》中的一道面试题的答案
- 关于《程序员面试宝典》中一道面试题的答案
- 程序员面试宝典题目-单链表
- 程序员面试宝典题目-双链表
- 一道php程序员面试题目
- cout << s.c_str() << endl;和cout << s << endl;的区别
- cout<<endl;与cout<<"/n";的区别
- 程序员面试宝典题目-基础篇
- 程序员面试宝典题目-栈、队列
- 《程序员面试宝典》部分字符串题目
- java程序员面试宝典题目(一)
- java程序员面试宝典题目<二>
- cout<<endl
- 华为面试的一道题目
- 一道面试的智力题目
- 一道复杂的面试题目
- 基于物化视图的数据复制方式
- int与Integer的区别
- Configuring IP Uplink Redirect on Catalyst 2948G-L3 Switches
- C++的多态性
- NSNumber vs NSInteger
- cout<<hex<<u.i<<endl 《程序员面试宝典》的一道union题目
- java 冒泡算法
- Linux下虚机SSH登陆问题解决方法--virt-manager
- 创新工场笔试题2013年校园招聘
- toj 3073 Country Road
- hdu 4738 Caocao's Bridges 割边无敌(trick)
- [教程]如何使用V7包中ActionBar(Eclipse版)
- 字符串排序
- 解决SlidingMenu 侧滑与ViewPager冲突问题