做饲料推广哪个网站好,魔法网站小程序开发,免费直链平台,企业网址怎么弄文章目录 每日一言12结语⭐如果发现自己做错了#xff0c;请不要气馁#xff0c;做题就是一个查漏补缺的过程。每个人不是天生就会写代码的#xff0c;给自己一些时间#xff0c;不要放弃#xff0c;加油陌生人#xff01; 每日一言
当你关注到自己行为背后的意图时请不要气馁做题就是一个查漏补缺的过程。每个人不是天生就会写代码的给自己一些时间不要放弃加油陌生人 每日一言
当你关注到自己行为背后的意图时你开始看见自己了当你关心意图背后的需要和感受时你才真的看见了。 -伯特·海灵格 1
下面代码的运行结果为
int main()
{unsigned char puc[4];struct tagPIM{unsigned char ucPim1;unsigned char ucData0 : 1;unsigned char ucData1 : 2;unsigned char ucData2 : 3;}*pstPimData;pstPimData (struct tagPIM*)puc;memset(puc,0,4);pstPimData-ucPim1 2; pstPimData-ucData0 3;pstPimData-ucData1 4;pstPimData-ucData2 5;printf(%02x %02x %02x %02x\n,puc[0], puc[1], puc[2], puc[3]);return 0;
}正确答案 02 29 00 00 解析 想要回答正确这道题你必须要对位段有一定的了解如果忘记了快去复习吧~接下来我们一步步分析 我们先看结构体 struct tagPIM{unsigned char ucPim1;unsigned char ucData0 : 1;unsigned char ucData1 : 2;unsigned char ucData2 : 3;}*pstPimData;首先思考一下这个问题这个结构体占用了几个字节 让我们把图画出来 答案是2个字节 unsigned char puc[4];给了我们4个字节pstPimData (struct tagPIM*)puc;结构体只占用2个字节
知道了这些我们再看赋值 pstPimData-ucPim1 2; pstPimData-ucData0 3;pstPimData-ucData1 4;pstPimData-ucData2 5;因为 ucPim1 把一个字节占据了所以 因为 ucData0 3 而 3 转换成二进制为 11 而又因为 ucData0 只分配到了一个比特位于是越界了发生截断只保留了后一位 1 因为 ucData1 4 而 4 转换成二进制为 100 而又因为 ucData1 只分配到了两个比特位于是越界了发生截断只保留了后两位 00 大家根据以上过程来想一想 ucData2 5 的结果吧。 最终 puc[1] 如下 最后用16进制打印出 puc 的每个元素 其中 puc[0] 不用多说就是 2 puc[1] 为 29 计算过程如下 如果看不懂的话就去复习进制转换吧~ puc[2] 和 puc[3] memset 后都动过不必多说肯定是00 嘿嘿这道题就做出来了 ^_^
2
有以下宏定义和结构定义
#define MAX_SIZE AB
struct _Record_Struct
{unsigned char Env_Alarm_ID : 4;unsigned char Para1 : 2;unsigned char state;unsigned char avail : 1;
}*Env_Alarm_Record;
struct _Record_Struct *pointer (struct _Record_Struct*)malloc(sizeof(struct _Record_Struct) * MAX_SIZE);当 A2B3时pointer 分配几个字节的空间
正确答案 9 在做这道题时要注意#define 执行的是查找替换 让我们一步一步来分析 首先看结构体
struct _Record_Struct
{unsigned char Env_Alarm_ID : 4;unsigned char Para1 : 2;unsigned char state;unsigned char avail : 1;
}*Env_Alarm_Record;它占几个字节呢 答案是 3 原因 结构体向最长的 char 对齐前两个位段元素一共 42 位不足8位合起来占 1 字节最后一个单独 1 字节一共 3 字节。 由于 #define 执行的是查找替换 sizeof(struct _Record_Struct) * MAX_SIZE这个语句其实是 3*23 结果为9
结语
⭐如果发现自己做错了请不要气馁做题就是一个查漏补缺的过程。每个人不是天生就会写代码的给自己一些时间不要放弃加油陌生人
请给自己些耐心一口吃不成胖子。 山外青山楼外楼莫把百尺当尽头。 保持空杯心态加油努力吧 都看到这里啦真棒(*^▽^*)
可以给作者一个免费的赞赞吗这将会鼓励我继续创作谢谢大家
编程小白写作如有纰漏或错误欢迎指正