Linux C语言 15-强制数据类型转换

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值