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

【C语言学习】数据类型转换

一、自动类型转换

1.当运算符两边的数据类型不同时,C语言会帮我们将其转换为较大的类型。即将数据转换成表达范围更大的类型。

将前一种类型转换为后一种类型
char --> short --> int --> long --> long long  
int --> float --> double

2.对于printf,任何小于int 的类型都会变转换成int;float会被转换成double

printf ("%f\n", a); \\无论是“float”还是“double”输出时都用"%f"即可,就是因为C语言会把float类型转换成double类型。

3.但是scanf不会,如果要输入short,需要%hd

#include<stdio.h>
int main()
{short x;scanf("%hd", &x);printf("%d\n", x);return 0;
}

二、强制类型转换

1.要把一个量强制转换成另一个类型(通常是较大类型转换成较小类型),就需要(类型)值

例如
(int)10.2
(short)32

2.转换时需要注意数据的安全性,小的变量不总能表达大的量,即大转小时大的不能超过小的类型所能表达的范围,否则就会出现错误。

#include<stdio.h>
int main()
{printf("%d\n", 32768);printf("%d\n", (short)32768);printf("%d\n", (char)32768);return 0;
}

在这里插入图片描述
3.强制类型转换只是从转换前的那个变量计算出了一个新的类型的值,并不会改变那个变量的值,也不会改变那个变量的数据类型。

#include<stdio.h>
int main()
{int i = 32768;short s = (short)i;printf("%d\n", i);printf("%d\n", s);return 0;
}

在这里插入图片描述
4.强制类型转换的算术优先级高于四则运算。

double a = 1.0;
double b = 2.0;
int i = (int)(a/b);//i=0;int a = 8;
int b = 6;
double i = (double)(a/b);//i=1.000000;
http://www.lryc.cn/news/107956.html

相关文章:

  • 深入了解PostgreSQL:高级查询和性能优化技巧
  • 【C#学习笔记】值类型(1)
  • 二十三种设计模式第二十二篇--中介者模式
  • 小研究 - 微服务系统服务依赖发现技术综述(二)
  • javaee 泛型的上下边界和通配符的使用
  • 【TypeScript】类型声明及应用(二)
  • rust from_utf8_lossy怎么使用?
  • #P0997. [NOIP2006普及组] 数列
  • 做完两年外包,感觉自己废了一半....
  • Kubernetes系列-Ingress
  • 软件测试之Docker常见问题汇总!附解决方法!
  • Python-操作Excel表-openpyxl模块使用
  • 向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录
  • 【HDFS】Block、BlockInfo、BlockInfoContiguous、BlockInfoStriped的分析记录
  • STM32 LoRa(学习二)
  • ASP.NET Core学习路线图
  • 无涯教程-Lua - for语句函数
  • 二叉树的相关题目
  • 【antd之tabs踩坑篇】Tabs有items时切换不起作用
  • 简单模拟livedata数据倒灌
  • python爬虫-加速乐cookie混淆解析实例小记
  • TensorFlow 中前缀 prefix
  • SystemVerilog scheduler
  • Qt 5. QSerialPort串口收发
  • 什么是Java中的JVMTI(JVM Tool Interface)?
  • WAF独木难支 RASP与ADR将成应用安全防护2.0时代新宠
  • 四、Unity中颜色空间
  • Java程序员面试题
  • 【自动化剧本】Role角色
  • 安全文件传输:如何避免数据泄露和黑客攻击