Linux C语言 15-强制数据类型转换
本节关键字:Linux、C语言、强制数据类型转换、大小端判断
相关C库函数:sizeof、printf
什么是强制数据类型转换?
大白话,使用强制类型转换符将一种数据类型转换为另外一种数据类型的过程叫做强制数据类型转换。其实,就是改变符号位、将数据类型的长度加长或者截断。
强制数据类型转换示例
#include <stdio.h>
char ch1 = 200;
unsigned char ch2 = 200;
printf("ch1=%d, ch2=%d\n", ch1, ch2);
printf("ch1=%d, ch2=%d\n", (unsigned char)ch1, (char)ch2);
printf("ch1=%d, ch2=%d\n", (int)ch1, (int)ch2);
printf("ch1=%d, ch2=%d\n", (unsigned int)ch1, (unsigned int)ch2);
/** 运行结果:
ch1=-56, ch2=200
ch1=200, ch2=-56
ch1=-56, ch2=200
ch1=-56, ch2=200
*/
大小端判断
小端模式
小端模式是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
大端模式
大端模式是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 也就是我们人类读数字的顺序,我们从左往右读,byte的摆放也就从高字节到底字,从左往右进行摆放。
#include <stdio.h>
int main(void)
{
int a = 0x12345678
char *b = (char *)&a;
if (b[0] == 0x78)
printf("Little Endian\n");
if (b[0] == 0x12)
printf("Big Endian\n");
return 0;
}