当前位置: 首页 > news >正文

4-数据类型

一.数据在内存中的存储

             我们上述,所介绍的数据类型,全部都可以分为两种, 分别⽤两个关键字对应。

     超出范围数据的计算方法:

1.数据范围

      char , 有符号类型, 占 1bytes。 可以表示负数,0,正数。范围 [-128~127] -128 ~ -1 0~127   

      unsigned char , ⽆符号类型,占 1bytes。可以表示 0,正数。范围 [0~255] 

2.设计规则

      ⽆符号类型的数原码, 反码,补码是它本身. [正数和 0]

      有符号类型的数的最⾼位表示符号位, 0 表示为正数,1 表示为负数

                                                                  负数的反码 = 符号位不变,其他位按位取反

                                                                   负数的补码 = 反码 + 1

 3.计算方法

      先计算整数的补码 (= 右边的数)

      把补码赋值给变量,然后观察变量的数据类型。

     若是为 unsinged char 类型,⼀定为正数或 0,原, 反, 补⼀样.%d 输出的原码就是补码。

     直接转换为元素输出即可。

     若是为 char 类型, 观察变量内存存储数据的最⾼位, 1 表示为负数,%d 输出需要转换为原码输出.

二. 数据类型的强制转换

     强转类型: 采⽤某⽅式将某种数据类型强制转换位我们需要的数据类型.  

     注: 强转只是临时强转,本身的数据类型没有改变。

   1.隐式转换

(1)不同类型整数进行运算,窄类型整数自动转换为宽类型整数,有符号整数转换为无符号整 数。

    (2)不同类型浮点数进行运算,精度小的类型自动转换为精度大的类型。

    (3)整数与浮点数进行运算,整数自动转换为浮点数。

 // 整型提升
short s1 = 10;
 int n1 = 40000;
 // 运算过程中,变量 s1 是 short 类型,会自动转为 int 类型
printf("%d \n", s1 + n1);
 // 有符号整数自动转为无符号整数
// int n2 = 100;
 int n2 =-100;
 unsigned int n3 = 20;
 // 负数转为无符号整数,两者绝对值的和是无符号整数的最大值再加 1
 printf("%u \n", n2 + n3);
 // 不同类型的浮点数运算,精度低的转诶精度高的
float f1 = 1.25f;
 double d2 = 4.58667435;
 // printf("%f \t", f1);
 printf("%.10f\n", f1 + d2);
 // 整型与浮点型运算,整型转为浮点型
int n4 = 10;
 double d3 = 1.67;
 printf("%f", n4 + d3);

2.赋值过程中的自动类型转换

#include <stdio.h>
 int main()
 {
 // 赋值 窄类型赋值给宽类型
int a1 = 10;
 double a2 = a1;
 printf("%f \n", a2);
 // 赋值 宽类型赋值给窄类型
double b1 = 1.2;
 int b2 = b1;
 printf("%d", b2);
 return 0;
 }

3.强制类型转换(显式转换)

 double d1 = 1.934;
 double d2 = 4.2;
 int num1 =(int)d1 + (int)d2; // d1转为1,d2转为4,结果是5
 int num2 =(int)(d1 + d2); // d1+d2=6.134,6.134转为6
 intnum3=(int)(3.5*10+6*1.5);//35.0+9.0=44.0->int=44
 printf("num1=%d \n", num1);
 printf("num2=%d \n", num2);
 printf("num3=%d \n", num3);
 //计算3个数字的平均数
int n1 = 12, n2 = 45, n3 = 19;
 //先求和
int total = n1 + n2 + n3;
 //用和除以数量
double avg = (double)total / 3;
 printf("%d、%d、%d三个数字的平均数:%.2f", n1, n2, n3, avg);

相关文章:

  • 2025年- H1-Lc109-160. 相交列表--java版
  • 前端使用proxy穿透后查看真实请求地址方法
  • WD5208 集成了 500V 高压 MOSFET 和高压启动电路,输出电压为 12V
  • DeepSeek-R1模型现已登录亚马逊云科技
  • C盘优化方法
  • 超卖问题解决方案
  • GitHub 上开源一个小项目的完整指南
  • 【Web API系列】XMLHttpRequest API和Fetch API深入理解与应用指南
  • 在MH2103上如何将usb cdc类虚拟出来的串口在Windows上使用固定串口号
  • 高校实验室安全数智化分级分类管理-危化品管理LIMS
  • Linux xxd命令
  • DeepSeek-MLA
  • 如何将内网的IP地址映射到外网?详细方法与步骤解析
  • 关于lombok的异常快速解决办法
  • 前端加密与Python逆向实战:HMAC-SHA1算法分析与数据抓取
  • OpenEuler部署Flink 1.19.2完全分布式集群
  • 极氪汽车云原生架构落地实践
  • 交换机工作在OSI模型的哪一层?
  • 比较与分析敏捷开发方法:XP、Scrum、FDD等的特点与适用场景
  • 计算机网络 3-2 数据链路层(流量控制与可靠传输机制)
  • 广州专业的网站建设/分享几个x站好用的关键词
  • 网站站建设建技设术技术/怎么进行推广
  • 域名和网站空间相互做解析/优化网站打开速度
  • 店铺销售系统软件哪个好/网站标题优化排名
  • 国外网站为啥速度慢/怎么接广告赚钱
  • 做网站 用什么做数据库最好/百中搜优化