当前位置: 首页 > news >正文

WordPress获取文章封页seo薪资水平

WordPress获取文章封页,seo薪资水平,两学一做知识竞答网站,国内b2c电商平台排名C语言练习题 文章目录 C语言练习题题目一题目二题目三题目四题目五题目六题目八 题目一 #include <stdio.h> //VS2022,默认对齐数为8字节 union Un {short s[7];int n; };int main() {printf("%zd", sizeof(union Un));return 0; }代码运行结果:> 16 sizeo…

C语言练习题

文章目录

  • C语言练习题
    • 题目一
    • 题目二
    • 题目三
    • 题目四
    • 题目五
    • 题目六
    • 题目八

题目一

#include <stdio.h>
//VS2022,默认对齐数为8字节
union Un
{short s[7];int n;
};int main()
{printf("%zd", sizeof(union Un));return 0;
}

代码运行结果:>
16

sizeof计算的是联合体的大小,联合体的大小并不是联合体成员中最大的那个,联合体也是有对齐的
在上述代码中,联合体中有两个成员,short s[7],占14字节对齐数为1,int n,和short s[7],共用空间,对齐数为4,14字节并非联合体中最大对齐数4的整数倍,所以将对齐至16字节

题目二

#include <stdio.h>
//VS2022,默认对齐数为8字节
typedef struct {int a;char b;short c;short d;
}AA_t;int main()
{printf("%zd", sizeof(AA_t));
}

代码运行结果:>
12

上述问题设计结构体内存对齐

  1. 结构体第一个成员对齐至偏移量为0的位置
  2. 其他成员按照取默认对齐数与改成员的大小的较小值对齐,且对齐至整数倍
  3. 结构体的总大小为最大对齐数的整数倍
    在这里插入图片描述
    在上述代码中
    a 为结构体第一个成员位于偏移量为0的位置,且占4个字节
    b 的大小为1字节,默认对齐数为8,取较小值1,取对齐数1的整数倍,也就是偏移量为4的位置,占1个字节
    c 的大小为2字节,默认对齐数为8,取较小值2,取对齐数2的整数倍,也就是偏移量为6的位置,占2个字节
    d 的大小为2字节,默认对齐数为8,取较小值2,取对齐数2的整数倍,也就是
    偏移量为8的位置,占2个字节
    总大小为10字节,10字节不是最大对齐数4的倍数,对齐至12字节

题目三

#include <stdio.h>
#pragma pack(4)
/*编译选项,表示4字节对齐 平台:VS2022。语言:C语言*/
//假设long 是4个字节
int main(int argc, char* argv[])
{struct tagTest1{short a;char b;long c;long d;};struct tagTest2{long a;short b;char c;long d;};struct tagTest3{short a;long b;char c;long d;};struct tagTest1 stT1;struct tagTest2 stT2;struct tagTest3 stT3;printf("%zd %zd %zd", sizeof(stT1), sizeof(stT2), sizeof(stT3));return 0;
}
#pragma pack()

代码运行结果:>
12 12 16

#program是用于修改默认对齐数

#program pack(4)  //修改默认对齐数
#program pack( )  //取消设置的对齐数,还原为默认对齐数

stT1
在这里插入图片描述

第一个成员a位于偏移量为0的位置
第二个成员b的大小为1字节,默认对齐数为4,取较小值1,对齐至1的整数倍,也就是偏移量为3的位置
第三个成员c的大小为4字节,默认对齐数为4,取较小值4,对齐至4的整数倍,也就是偏移量为4的位置
第四个成员d的大小为4字节,默认对齐数为4,取较小值4,对齐至4的整数倍,也就是偏移量为8的位置
总大小为12字节,为最大对齐数4的整数倍,所以stT1的大小为12字节

stT2
在这里插入图片描述
第一个成员a位于偏移量为0的位置
第二个成员b的大小为2字节,默认对齐数为4,取较小值2,对齐至2的整数倍,也就是偏移量为4的位置
第三个成员c的大小为1字节,默认对齐数为4,取较小值1,对齐至1的整数倍,也就是偏移量为6的位置
第四个成员d的大小为4字节,默认对齐数为4,取较小值4,对齐至4的整数倍,也就是偏移量为8的位置
总大小为12字节,为最大对齐数4的整数倍,所以stT2的大小为12字节

stT3
在这里插入图片描述
第一个成员a位于偏移量为0的位置
第二个成员b的大小为4字节,默认对齐数为4,取较小值4,对齐至4的整数倍,也就是偏移量为4的位置
第三个成员c的大小为1字节,默认对齐数为4,取较小值1,对齐至1的整数倍,也就是偏移量为8的位置
第四个成员d的大小为4字节,默认对齐数为4,取较小值4,对齐至4的整数倍,也就是偏移量为12的位置
总大小为16字节,为最大对齐数4的整数倍,所以stT2的大小为16字节

结论
相同大小的结构体成员位于不同位置,结构体的总大小不一样,建议让占⽤空间⼩的成员尽量集中在⼀起

题目四

//VS2022 X64
#define MAX_SIZE A+B
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);

当A=2, B=3时,pointer分配( 9 )个字节的空间

解释:
#define是在C和C++中使用的预处理器指令,用于创建宏。编译器在执行代码时,会将define定义的标识符全都替换成相应的值

先计算位段的大小
在这里插入图片描述
冒号后的数字表示bit位,在VS2022中,位段的内存分配是从右到左的,其次遇到不够的时候,直接舍去

Env_Alarm_ID 占4个bit位,Para1 占2个bit位,第一个字节剩1个bit位不够下一个成员,舍去这一个bit位
state 占8个bit位,第二个字节分配给state使用
avail 占1个bit位,第三个字节中的一个bit位给avail 使用
总共占3个字节

sizeof(struct _Record_Struct)计算结果为8

题目给出A = 2 B = 3
sizeof(struct _Record_Struct) * MAX_SIZE 其中的 MAX_SIZE 会被替换为A + B
也就是 3 * 2 +3 ,计算结果为9

malloc为动态内存开辟,如果开辟成功则返回一个指针,开辟失败则返回一个NULL,返回的类型为void*

struct _Record_Struct *pointer = (struct _Record_Struct*)malloc(sizeof(struct _Record_Struct) * MAX_SIZE);

整句代码的意思为给pointer初始化赋值一个指针,指针指向的内容为开辟好的9字节的内存空间

题目五

在X86下,小端字节序存储

#include<stdio.h>
int main()
{union{short k;char i[2];}*s, a;s = &a;s->i[0] = 0x39;s->i[1] = 0x38;printf("%x\n", a.k);return 0;
}

代码运行结果:>
3839

解释:
在这里插入图片描述
short 和 char i [2] 共用空间,打印的是16进制的a.k,也就是打印两个字节的内容
由于是小端存储,在低地址存放的是低位字节,高地址存放高位字节的内容,也就是倒着存放的,举例:0x11223344在内存中是 44 33 22 11
所以打印的结果为3839

题目六

enum ENUM_A
{X1,Y1,Z1 = 255,A1,B1,
};
enum ENUM_A enumA = Y1;
enum ENUM_A enumB = B1;
printf("%d %d\n", enumA, enumB);

代码运行结果:>
1 257

枚举成员变量默认为从0开始,依次递增1
也就是说
X1 = 0
Y1 = 2
Z1 = 255
A1 = 256
B1 = 257
所以打印结果为1 257

题目八

#include <stdio.h>
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

在这里插入图片描述
位段总共占2个字节的空间,其中ucPim1占了1个字节,ucData0 占了1个bit位,ucData1 占了2个bit位,ucData2 占了3个bit位

2 的二进制为 0010 可以全部存入 ucPim1
3 的二进制为 0011 只能存1bit位到 ucData0
4 的二进制为 0100 只能存2bit位到 ucData1
5 的二进制为 0101 只能存3bit位到 ucData2
将值存入puc数组中,且数组默认元素为0

所以
第一个字节中的内容为 0000 0010 转为16进制为 0x02
第二个字节中的内容为 0010 1001 转为16进制为 0x29
第三个字节没被修改为0
第四个字节没被修改为0

%02x打印16进制,如果小于宽度2则补0
所以打印结果为 02 29 00 00

http://www.hkea.cn/news/207794/

相关文章:

  • 聊城做网站的公司价格谷歌seo软件
  • 支部网站及活动室建设网页广告调词平台
  • 网站建设的企业抚州seo外包
  • 澳门wap网站制作百度关键词检测工具
  • 哪些外贸网站可以做soho首页
  • 三门峡网站建设电话青岛网站推广公司
  • 洞口做网站找谁市场营销推广方案模板
  • 怎么做用来表白的网站湖人队最新消息
  • 新疆网站建设哪家好泉州网站seo外包公司
  • 网站开发前后端工具组合深圳推广公司推荐
  • 老外做的汉字网站一键生成app制作器
  • 网上设计接单的网站seo排名优化排行
  • wordpress后台加统计代码seo建站的步骤
  • 怎么做外贸网站的邮箱签名搜索引擎优化是指什么
  • 网页制作基础教程免费邯郸网站seo
  • phpcms做网站感想漯河seo推广
  • 公司部门kpi绩效考核指标模板河北百度seo软件
  • 印团网网站是哪家做的唯尚广告联盟
  • 网红营销网站seo综合查询怎么用的
  • 西安地区网站建设云推广
  • wordpress个人站2020年关键词排名
  • 网站建设企业公司石家庄新闻头条新闻最新今天
  • 道滘镇做网站百度统计
  • qq空间做宣传网站怎样建立自己的网站平台
  • 做设计一般用的素材网站是什么意思刷网站排名软件
  • 帮人做兼职的网站吗青岛seo服务哪家好
  • 贷款类网站怎样做网络营销的推广
  • 乐清做网站哪家好税收大数据
  • 校园网站建设需求天津放心站内优化seo
  • 哈尔滨微网站建设热搜在哪里可以看