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:


短整数变长整数:


符号扩展。

目录
打赏
0
0
0
0
40
分享
相关文章
C语言强制类型转换运算符
C语言强制类型转换运算符
52 1
|
10月前
|
C语言强制类型转换
C语言强制类型转换
82 0
C语言强制类型转换运算符
C语言强制类型转换运算符
143 0
C语言程序设计——强制类型转换运算符
C语言程序设计——强制类型转换运算符
C语言编程—强制类型转换
强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型,如下所示:
184 0
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
80 23
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
16 1
一文彻底搞清楚C语言的函数
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等