C语言中的强制类型转换与机组的联系

简介: C语言中的强制类型转换与机组的联系

测试代码块


void main(){
  // 1
  short x=-4321;      //short型占用2个字节
  unsigned short y=(unsigned short)x;
  // 2
  int a=165537, b=-34991;     //int型占用4个字节
  short c=(short)a, d=(short)b;   //short型占用2个字节
  // 3
  short x=-4321;
  int m=x;
  unsigned short n=(unsigned short)x;
  unsigned int p=n; 
}


研究与结论


代码1:


在代码1 中:


x:1110 1111 0001 1111 真值-4321


强制转化为无符号时变成:


y:1110 1111 0001 1111 真值61215


结论1:


无符号数与有符号数:


不改变数据内容,改变解释方式。


代码2:


int型占用4个字节


将int类型强制转化为short时:


short型占用2个字节


a b c d 结果:


a:0x000286a1  真值165537
c:0x86a1    真值-31071
b:0xffff7751  真值-34991
d:0x7751    真值30545



结论2:


长整数变短整数:


高位截断,保留低位。


代码3:


short x转化为int m ,因为 C 语言中定点整数是用“补码”存储的,所以前面补1。



short x转化为 无符号 n 真值发生改变



unsigned short n 转化成 unsigned int p ,无符号前面补0。



x:1110 1111 0001 1111
  16进制:0xef1f
m:1111 1111 1111 1111 1110 1111 0001 1111
  16进制:0xffffef1f 真值-4321
n:1110 1111 0001 1111 
  16进制:0xef1f 真值61215
p:0000 0000 0000 0000 1110 1111 0001 1111
  16进制:0x0000ef1f 真值61215


结论3:


短整数变长整数:


符号扩展。

相关文章
|
7月前
|
存储 程序员 C语言
C语言强制类型转换运算符
C语言强制类型转换运算符
42 1
|
7月前
|
存储 C语言
C语言强制类型转换
C语言强制类型转换
66 0
|
存储 编译器 C语言
27 C语言 - 强制类型转换
27 C语言 - 强制类型转换
52 0
|
7月前
|
存储 安全 C语言
C语言强制类型转换运算符
C语言强制类型转换运算符
93 0
|
7月前
|
存储 安全 程序员
C语言程序设计——强制类型转换运算符
C语言程序设计——强制类型转换运算符
|
存储 编译器 C语言
C语言编程—强制类型转换
强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型,如下所示:
147 0
|
存储 编译器 C语言
【C语言】强制类型转换的原理
【C语言】强制类型转换的原理
|
存储 编译器 C语言
C语言中的强制类型转换
C语言中的强制类型转换
179 0
C语言中的强制类型转换
|
15天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
34 10
|
15天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
34 9