c语言中各数据类型之间的强制转换

本文探讨了C语言中不同数据类型之间的强制转换,包括赋值转换和内存访问的不同形式,如char、short、int、long、float之间的转换,以及自定义结构体和long int型内存地址的转换。同时提到了函数类型转换,并鼓励读者分享更多类型的转换实例和讨论。
C语言是一门弱类型编程语言,在不越界、并且可读写的情况下可以对一段存在内存空间的内容进
行任意形式的访问及修改;
  1. 对系统保留的数据类型做转换:
int main()
{
   
   
    int a = 97;
    char b = a;
    printf("%c\n", b);
    return 0;
}
输出为:a

这种转换为赋值转换,仅仅是将一个变量的值赋予另外一个类型的变量而已。在C语言中,char\short\int\long\float都可以相互直接赋值,只是数据的完整性在不同类型之间做转换可能引起数据丢失的情况,这里就不一一说明;

  1. 同样是对类型的转换,这里对内存空间的存储内容做不同形式的访问
#include <stdio.h>

int main()
{
   
   
    char b[] = {
   
   0,0,1,1};
    int *a = b;
    printf("%#X\n",*a);
    return 0;
}
输出结果为:0X1010000
结果不是想象中的:0X00000101是因为这是多数主机的存储是小端存储,
即低位存放于低地址段。如0x12345678,在内存中的存储为78 56 34 12
#include <stdio.h>

int main()
{
   
   
    int b = 0x41424344;
    char *a = &b;
    printf("%c\n",*a);
    // or </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值