社区
C++ 语言
帖子详情
一道C/C++面试题
tanglei619
2011-11-18 03:15:37
#include <iostream>
using namespace std;
int main()
{
union V {
struct X {
unsigned char s1:2;
unsigned char s2:3;
unsigned char s3:3;
} x;
unsigned char c;
} v;
v.c = 100;
printf("%d\n",v.x.s3);
return 0;
}
结果为3,何解?
...全文
285
8
打赏
收藏
一道C/C++面试题
#include using namespace std; int main() { union V { struct X { unsigned char s1:2; unsigned char s2:3; unsigned char s3:3; } x; unsigned char c; } v; v.c = 100; printf("%d\n",v.x.s3); return 0; } 结果为3,何解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tanglei619
2011-11-21
打赏
举报
回复
恩 3Q!~
softwarestudying
2011-11-18
打赏
举报
回复
v是联合体(共用体)变量,共有两个元素x和c,都需要一个字节,它们分配于同一个地址。而x是结构体变量,共有三个元素s1、s2、s3,分别占2位、3位、3位。分配内存时低位在前,最位在后。当有v.c=100(其二进制为01100100)时,各变量的关系及内存存储情况见图所示。
其中x的成员s3为二进制的011,即十进制的3,所以输出结果为3。
Zou_prince
2011-11-18
打赏
举报
回复
struct X {
unsigned char s1:2;
unsigned char s2:3;
unsigned char s3:3;
} x;
加入x的二进制为 XXXXzzzyyyxx
s1占最后2位置:xx;(2)
s2占最后5-2位置:yyy;(3)
s1占最后8-5位置:zzz;(3,如果不够,有多少位算多少位)
c = 100
二进制为:1100100
s3=11; s2=001; s1=00;
s3=3; s2=1; s1=0;
假如
c = 200
二进制为:11001000
s3=110; s2=010; s1=00;
s3=6; s2=2; s1=0;
假如
c = 300
二进制为:100101100
s3=001; s2=011; s1=00;
s3=1; s2=3; s1=0;
现在能理解么
dijisaiyaren
2011-11-18
打赏
举报
回复
struct X {
unsigned char s1:2;
unsigned char s2:3;
unsigned char s3:3;
} x;
本人初学者
有个东西不懂啊,这个结构体里面定义的是些啥东西?
unsigned char s1:2;
luciferisnotsatan
2011-11-18
打赏
举报
回复
位域
大小端
tanglei619
2011-11-18
打赏
举报
回复
谢谢帮助,我在想想哈!~
bdmh
2011-11-18
打赏
举报
回复
x和v公用一块内存,而且要看大小端,一般的如下
100二进制是1100100,那么s3是11,s2是001,s1是00
eyodo8
2011-11-18
打赏
举报
回复
这是位结构,100的二进制为01100100,s3是011,打印出来自然是3
一道
c/
c++
面试题
的解题思路
本文详细解释了在
C++
中如何使用sizeof运算符来计算类中数据成员占用的内存空间,并着重讨论了内存对齐原则。通过分析不同数据类型组合的实例,揭示了如何正确理解和应用对齐规则。
C/
C++
的
面试题
一道
本文深入探讨了32位机上数据类型转换的原理,通过实例展示了不同数据类型的转换过程及结果,重点分析了无符号字符转换为无符号整型时的十六进制表示变化。
c/
c++
--
一道
c++
面试题
的思考与学习
本文深入探讨了
C++
中虚函数的工作原理,包括类内存布局、虚函数存储位置及虚表机制。通过具体示例代码解释了不同情况下虚函数如何被调用,以及如何通过虚表实现多态。
c 动态数组_C/
C++
求职者必备 23 道
面试题
,
一道
试题一份信心
本文详细阐述了
C++
编程中的关键概念,包括Static的三种用途,const的两种修饰方式,以及this指针的功能。同时介绍了头文件的防止重复引用机制#ifndef/define/endif,C与
C++
的主要区别,
C++
的函数参数传递方式,以及externC在混合编程中的作用。深入讲解了struct与class的区别,new与malloc的区别,heap与stack的内存管理,以及Vector、list和deque的特性对比。此外,文章还探讨了内联函数与宏的区别,引用与指针的不同,数组和链表的特性,链表判断环、长度计算及操作,重载与重写的本质差异,以及封装、继承、多态和虚函数的概念。最后,涉及内存管理、进程与线程的区别,TCP与UDP的特性,Socket套接字编程的基本步骤,以及TCP的三次握手和四次挥手过程。
c++
中内敛函数_C/
C++
求职者必备 23 道
面试题
,
一道
试题一份信心
本文详细阐述了
C++
中的Static、Const、This指针等基本概念,并对比了C与
C++
的区别,深入探讨了Vector、List等容器的特点,以及进程与线程、TCP与UDP等网络编程知识。
C++ 语言
65,211
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章