类型提升和不同类型计算时的痛点和难度

简介: 类型提升和不同类型计算时的痛点和难度



1.运算时的类型提升(发生在同类型计算下)

1)首先我们先看一段代码
unsigned char c=256;
printf("%d",c);

运行结果:0;

这是为什么呢?我们来分析一下,unsigned char 的取值范围是【0,255】,二进制表示形式为11111111,正好占满了所有的内存,而256的二进制为10000000,我们来比较一下                           11111111                                                                                                                                            10000000                                                                                                                                             这里会发生截断,也就是最终只保留了00000000,所有运行结果是0;

2)再来看一段代码
unsigned char c=-1;
printf("%d",c);

运行结果:255;

分析:

-1 源码:10000001
   反码:11111110
   补码:11111111  //在无符号char类型下它的结果就是255
3)再来看一段代码
char a = 5;//    00000000000000000000000000000111(运行时会进行整形提升)
  char b = 127;//  00000000000000000000000001111111
  char c = a + b;//00000000000000000000000010000110 先截断10000110(符号位是1,是负数,转化为源码=-124)
  printf("%d", c);

运行结果:-124

其实float进行运算时会转化为double进行运算,这个大家可以自己动手试试

2.不同类型计算

规则:

char , short ,int 都是整形家族

char和int运算转化为int 运算

int 和float运算转化为double运算

double和int运算转化为double运算

1)看一段代码猜结果
int a=2;
printf("%f",a/3);

运行结果:0.000000

这个大家是不是会很简单的得出结果,因为a和3都是整形,所以小数点后的值是不会进行计算,因此最后的结果就是0;

2)再看一段代码猜结果
float b=2;
printf("%f",b/3);

运行结果:0.666667

大家应该也能猜猜出来了,因为float和int进行运算时,int会被强转为float,所以小数点是会进行运算,所以最后的结果是0.666667。

可能大家会觉得,这些都是一些小知识,那有什么难度,但越是这样,我们越容易在这个上面出错,当我开始很多题之后,发现有时候卡住我的并不是那些很难掌握的知识点,而是那些我平时忽略的那些细节知识,那些错误经常让我摸不着头脑,神出鬼没,让我总以为是电脑或者自己做题目做糊涂了,因此,我们更要重视那些细节和小知识。

相关文章
|
7月前
|
存储 C# 容器
C变量数据类型深度解析:打造高效代码的基石
C变量数据类型深度解析:打造高效代码的基石
46 1
|
1月前
|
数据处理
重复值的判断标准是否可以根据具体业务需求进行调整?
重复值的判断标准需要紧密结合具体的业务需求进行灵活调整,这样才能确保数据处理的准确性和有效性,为业务决策提供可靠的数据支持。
121 58
|
4月前
|
存储 监控 Serverless
函数计算发布功能问题之用户在使用主流函数计算产品的日志服务时可能会遇到使用成本的问题如何解决
函数计算发布功能问题之用户在使用主流函数计算产品的日志服务时可能会遇到使用成本的问题如何解决
|
4月前
|
存储 数据挖掘 大数据
深度解析Hologres计算资源配置:如何根据业务场景选择合适的计算类型?
【8月更文挑战第22天】Hologres是一款由阿里云提供的分布式分析型数据库,支持高效的大数据处理与分析。本文通过电商优化商品推荐策略的案例,介绍了Hologres中的计算组型与通用型配置。计算组型提供弹性扩展资源,适合大规模数据及高并发查询;通用型则适用于多数数据分析场景,具备良好计算性能。通过实例创建、数据加载、计算任务建立及结果查询的步骤展示,读者可理解两种配置的差异并根据业务需求灵活选择。
68 2
|
5月前
|
存储 调度 数据库
软件研发核心问题之数据从哪里来,主要包括哪些类型的数据的问题如何解决
软件研发核心问题之数据从哪里来,主要包括哪些类型的数据的问题如何解决
|
5月前
|
编译器 C++ 运维
开发与运维函数问题之函数的返回类型如何解决
开发与运维函数问题之函数的返回类型如何解决
41 6
|
4月前
|
存储 人工智能 算法
高质量存储力发展问题之“存储即平台”的定义如何解决
高质量存储力发展问题之“存储即平台”的定义如何解决
29 0
|
测试技术 程序员 API
3个案例,详解如何选择合适的研发模式 | 研发效能提升36计
3个案例,详解如何选择合适的研发模式,研发模式的选择与产品形态、发布方式、团队规模、协作成熟度密切相关。本文我们将根据不同的团队场景,分析如何选择适合团队的研发模式。
1191 1
3个案例,详解如何选择合适的研发模式 | 研发效能提升36计
|
测试技术
【类型挑战】获取函数返回类型,难度⭐️⭐️
【类型挑战】获取函数返回类型,难度⭐️⭐️
151 0
【类型挑战】获取函数返回类型,难度⭐️⭐️
|
SQL NoSQL 安全
蚂蚁图计算正式升级为TuGraph,查询效率提升10倍!兼容性更强
蚂蚁集团“大规模图计算系统GeaGraph”正式升级为TuGraph ,并完成了产品3.0版本的迭代。迭代后的版本查询效率提升10倍,兼容性更强。
741 0
蚂蚁图计算正式升级为TuGraph,查询效率提升10倍!兼容性更强