short x=-4321 //1110 1111 0001 1111
unsigned short y=(unsigned short)x //1110 1111 0001 1111
进行强制类型转换后,不改变数据内容本身,只改变解释方式
以有符号数解释为-4321,而以无符号数解释为61215
长整数变短整数
int a=165537; //0x000286a1
b=-34991; //0xffff7751
short c=(short)a; //0x86a1 以补码规则解析真值-31701
d=(short)b; //0x7751 真值+30545
short会直接将两个字节的高位截断,只保留低两个字节
在此处补充一下一种大小端存储的判断方式,以便日后复习
#include<stdio.h>
//小端存储:低地址存放最低有效字节(LSB)例如01H,大端存储:低地址存放最高有效字节(MSB)例如00H
int main(){
int i=1; //0x00000000 00000000 00000000 00000001
// 1. &i取i的地址,2. (char*)取i的最低字节地址 3. *(char*)&i,解引用,取得该地址存储的值
char c=*(char*)&i;
if(c){
printf("小端\n");
}else{
printf("大端\n");
}
return 0;
}
//输出: 小端
边接对齐:本质就是空间换时间,提升运行效率
K字节大小的数据必须要存储在K的整数倍的地址上
结构体最终大小是其内部最大数据类型的整数倍,不足则需要填充
文章探讨了类型转换如何影响数值解释,如从有符号到无符号的转换导致不同解读;介绍了大小端存储的区别,以及如何通过边接对齐提高运行效率,包括结构体内存对齐的重要性。
6880

被折叠的 条评论
为什么被折叠?



