#include <cstdio>
#include <iostream>
#include <string>
#include <bitset>
using namespace std;
typedef unsigned int uint32_t;
void inet_ntoa(uint32_t in)
{
char b[18];
register char *p;
p = (char *)∈
#define UC(b) (((int)b)&0xff)
sprintf(b, "%x.%x.%x.%x\n", UC(p[0]), UC(p[1]), UC(p[2]), UC(p[3]));
printf(b);
}
int main()
{
/**联合体与位域测试*/
union //联合体总共用一个存储空间,每个变量的起始地址相同, char 类型 最大一个字节长度, 8位
{
struct //占6位
{
unsigned char a:1;
char b:2;
char c:3;
}d;//位域 d 位域的正负与编译器有关, 尽量使用 无符号类型数据表示 位域
char e;
} f;
f.e = -2;
//二进制 表示 : 1111 1110(0000 0010 取反 加 1 )
// <---- 内存增大
// c b a
// | | |
//111 11 0
printf("a = %d, b = %d, c = %d \n",f.d.a, f.d.b, f.d.c);//输出为 0 , -1 , -1;
printf(" e = %p, d = %p\n", &f.e, &f.d); // 两者地址一样 001DF90F
字符 赋值给INT 大小端模式 联合体 位域 等 基础知识简单整理
最新推荐文章于 2024-01-25 18:19:29 发布
这篇博客介绍了C++中字符赋值给INT时的大小端模式处理,以及联合体和位域的概念。通过示例展示了如何利用联合体进行位域操作,并解释了位域的正负问题。此外,还探讨了大小端模式在处理整数时的不同表示,以及字符转INT时的符号位处理。
摘要由CSDN通过智能技术生成