C语言是一门弱类型编程语言,在不越界、并且可读写的情况下可以对一段存在内存空间的内容进
行任意形式的访问及修改;
- 对系统保留的数据类型做转换:
int main()
{
int a = 97;
char b = a;
printf("%c\n", b);
return 0;
}
输出为:a
这种转换为赋值转换,仅仅是将一个变量的值赋予另外一个类型的变量而已。在C语言中,char\short\int\long\float都可以相互直接赋值,只是数据的完整性在不同类型之间做转换可能引起数据丢失的情况,这里就不一一说明;
- 同样是对类型的转换,这里对内存空间的存储内容做不同形式的访问
#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 </

本文探讨了C语言中不同数据类型之间的强制转换,包括赋值转换和内存访问的不同形式,如char、short、int、long、float之间的转换,以及自定义结构体和long int型内存地址的转换。同时提到了函数类型转换,并鼓励读者分享更多类型的转换实例和讨论。
9521

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



