C 程序设计教程(07)—— 数据类型转换

news2024/12/30 1:04:22

C 程序设计教程(07)—— 数据类型转换

该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用户阅读。

目录

  • C 程序设计教程(07)—— 数据类型转换
    • 一、自动类型转换
    • 二、赋值类型转换
    • 三、强制类型转换

各种类型的数据可以混合运算,例如:

x = 10+'a'+1.5-12.34*'b';

在进行混合运算时,不同类型的数据要转换成同一类型的数据。

一、自动类型转换

混合于同一表达式中的不同类型常量及变量,应变换为同一类型的量。编译程序将所有操作数变换为与最大类型操作数同类型。具体规则如下:

(1)所有 char 及 short int 型量转换为 int 型,所有 float 转换为 double。

(2)如果操作数对中一个为 double,另一个转换为 double。否则,一个为 long,另一个转换为 long。

(3)一个为 unsigned,另一个转换为 unsigned。

通过以上规则,每一对操作数均变为同一类型。例如:

#include<stdio.h>
int main()
{
	char ch='A';
	int i=2;
	float f=2.5;
	double d=1.2,result;
	result=ch/i+f*d-(f+i);
	//(1)执行 ch/i=32,把ch转换为int类型 
	//(2)执行f*d=3.0,把f转换为double类型 
	//(3)执行f+i=4.5,把f和i转换为double类型 
	//(4)执行32+3.0-4.5=30.5 
	printf("%lf\n",result);
	return 0;
} 

以上程序的运行结果如下:

在这里插入图片描述

二、赋值类型转换

进行赋值运算时,当赋值运算符两边的数据类型不用时,将由系统自动进行类型转换。

转换的原则是:赋值运算符右边的数据类型转换成左边的变量类型。转换规则如下:

赋值运算符左侧类型赋值运算符右侧类型转换说明
floatint将整型数据转换成实型数据后再赋值。
intfloat将实型数据的小数部分截去后再赋值。
longint、short值不变
int、shortlong右侧的值不能超过左侧数据值的范围。否则将会导致不可预料的结果。
unsignedsigned按原样赋值。右侧的值不能超过左侧数据值的范围。
signedunsigned按原样赋值。右侧的值不能超过左侧数据值的范围。

例如:

#include<stdio.h>
int main()
{
	char ch;
	int i;
	float f;
	double d;
	long l;
	short s;
	i=1; 
	f=i;
	printf("%f\n",f);
	f=25.8;
	i=f;
	printf("%d\n",i);
	s=5;
	l=s;
	printf("%d\n",l);
	l=56;
	i=l;
	printf("%d\n",i);
	l=3466347634764;  //数值太大 
	i=l;
	printf("%d\n",i); //输出错误 
	return 0;
} 

以上程序的运行结果如下:

在这里插入图片描述

三、强制类型转换

强制类型转换通过类型转换运算来实现。格式为:

(type)exp;

其功能是把表达式的运算结果强制转化成类型声明符所表示的类型。例如:

#include<stdio.h>
int main()
{
	int i;
	for(i=1;i<=100;i++)
	{
		printf("%d/2 is:%f  ",i,(float)i/2);
		if(i%5==0) printf("\n");
	} 
	return 0;
} 

以上程序的运行结果如下:

在这里插入图片描述

说明:

(1)类型声明符和表达式都必须加括号(单个变量可以不加括号)。例如:(int)(x+y) 表示把 x+y 的运算结果强制转换为 int 型。而 (int)x+y 表示把 x 强制转换为 int 型之后再和 y 相加。

(2)无论是强制转换还是自动转换,都只是为了本次运算的需要而对变量进行的临时性转换,而不改变变量本身的类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql学习总结(一)

总结一下近期学习的mysql内容&#xff1a;这里主要总结一下mysql的底层数据结构索引的本质是什么&#xff1f;索引的本质就是排好序的一种数据结构&#xff0c;通过索引我们能干什么呢&#xff1f;&#xff0c;快速的去定位到我们想要查找的数据&#xff0c;就像是你看书&#…

Ansible 介绍与实战操作演示

文章目录一、概述二、Ansible 架构三、Ansible 工作原理四、Ansible 安装与基础配置1&#xff09;开启记录日志2&#xff09;去掉第一次连接ssh ask确认五、Ansible 的七个命令1&#xff09;ansible2&#xff09;ansible-doc3&#xff09;ansible-playbook4&#xff09;ansible…

非线性系统辨识:非线性 ARX 和 Hammerstein-Wiener

1. 系统辨识 系统辨识是根据系统的输入输出时间函数来确定描述系统行为的数学模型。现代控制理论中的一个分支。通过辨识建立数学模型的目的是估计表征系统行为的重要参数&#xff0c;建立一个能模仿真实系统行为的模型&#xff0c;用当前可测量的系统的输入和输出预测系统输出…

Js逆向教程25-BOM DOM过检测

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程25-BOM DOM过检测 一、JS BOM 检测 它是一种浏览器环境&#xff0c;脱离了浏览器在外部不能直接调用的就是BOM 在浏览器中…

SAP工作流对象类

目录 1. 实现IF_WORKFLOW接口 2. 创建流程属性 3. 接口方法参考 4. 定义事件 5. 工作流触发&#xff08;事件抛出&#xff09; 业务对象作为工作流的数据内核&#xff0c;也是联系业务流程和工作流的重要核心&#xff0c;体现形式一般为BOR或者业务对象类&#xff0c;用来标识不…

SpringCloud从入门到精通(六)

Hystrix-熔断器 Hystrix-概述 • Hystix 是Netflix 开源的一个延迟和容错库&#xff0c;用于隔离访问远程服务、第三方库&#xff0c;防止出现级联失败&#xff08;雪崩&#xff09;。• 雪崩&#xff1a;一个服务失败&#xff0c;导致整条链路的服务都失败的情形 Hystix 主要功…

【Neo4j构建知识图谱】:cypher操作语言加载 CSV电影人数据集链接文件

这目录 数据链接来源1、创建约束2、从 CSV 文件添加节点3、从 CSV 文件添加关系4、运行cypher查询5、清理数据库参考CSV 文件可以使用LOAD CSV密码条款。出于安全原因,无法加载本地CSV文件,这些文件必须在HTTP或HTTPS服务器(如GitHub,Google Drive和Dropbox)上公开访问。使…

Python 中将列表中的每个元素除以一个数字

Python 中将列表中的每个元素除以一个数字&#xff1a; 使用列表理解来遍历列表。在每次迭代中&#xff0c;将当前列表元素除以数字。新列表将包含除法结果。 my_list [8, 12, 20]# ✅ divide each element in list by number new_list [item / 2 for item in my_list] pri…

雪花算法笔记

SnowFlake 雪花算法 SnowFlake 中文意思为雪花&#xff0c;故称为雪花算法。最早是 Twitter 公司在其内部用于分布式环境下生成唯一 ID。在2014年开源 scala 语言版本。 实现原理 雪花算法原理就是生成一个的64位比特位的 long 类型的唯一 id。 最高1位固定值0&#xff0c;因…

React Context 完美替代品 Jotai

1. 前言 React 的属性透传场景 虽然有很多方式可以实现&#xff0c;但能做到代码写的少、re-render 轻松处理的方式并不多。 而状态管理工具 Jotai 却可以很好的解决这些问题。 最近的业务和组件场景里 也在用此方式实现。 2. React Context 的不足 常规解决数据透传通常使…

BUUCTF 之 [ACTF2020 新生赛]Exec(命令执行漏洞)

BUUCTF 之 [ACTF2020 新生赛]Exec&#xff08;命令执行漏洞&#xff09;相关观察进攻相关 项目内容难度简单类型WEB靶场BUUCTF坐标Exec观察 这界面和这网页标题结合起来&#xff0c;相信给位都能猜到这个靶场中很有可能存在命令执行漏洞。 进攻 构造如下语句显示当前路径中的…

Learning Monocular Visual Odometry via Self-Supervised Long-Term Modeling

Paper name Learning Monocular Visual Odometry via Self-Supervised Long-Term Modeling Paper Reading Note URL: https://arxiv.org/pdf/2007.10983.pdf TL;DR ECCV 2020 文章&#xff0c;该文章认为在短时间序列上训练无法在长时间序列上良好泛华&#xff0c;所以受到…

从Web3视角审视茅台的“元宇宙”APP,这或是中国版的“星巴克奥德赛”

图片来源&#xff1a;由无界 AI 绘画工具生成2023年1月1日&#xff0c;一款名为《巽风数字世界》的APP登录App Store&#xff0c;这是由茅台和网易联合推出的虚拟世界APP。因而&#xff0c;有媒体称&#xff0c;茅台要进军元宇宙了&#xff01;简单讲&#xff0c;这是一款虚拟世…

Spring核心与设计思想 -- IoC与DI

Spring核心与设计思想 -- IoC与DI一、Spring 是什么&#xff1f;1.1 什么是容器&#xff1f;1.2 什么是 IoC&#xff1f;二、理解 IoC2.1 传统程序开发的问题2.2 分析2.3 控制反转式程序开发2.4 对比总结规律2.5 理解 Spring IoC三、DI 概念说明一、Spring 是什么&#xff1f; …

k8s集群部署springboot项目

一、前言 本篇,我们将基于k8s集群,模拟一个比较接近实际业务的使用场景,使用k8s集群部署一个springboot的项目,我们的需求是: 部署SpringBoot项目到阿里云服务器 ;基于容器打包,推送私有镜像仓库 ;采用K8S集群部署,对外暴露服务,pod副本扩容,公网可以访问 ;二、完…

【案例教程】GEE遥感云大数据在林业中的应用

以Earth Engine&#xff08;GEE&#xff09;为代表全球尺度地球科学数据&#xff08;尤其是卫星遥感数据&#xff09;在线可视化计算和分析云平台应用越来越广泛。该平台存储和同步遥感领域目前常用的MODIS、Landsat和Sentinel等卫星影像、气候与天气、地球物理等方面的数据集超…

禅道的部署与使用

文章目录1、禅道介绍2、下载安装3、使用3.1、创建项目3.2、添加用户3.3、团队管理3.4、测试人员提Bug3.5、开发人员修复Bug4、总结1、禅道介绍 官网地址&#xff1a;https://www.zentao.net禅道是专业的研发项目管理软件&#xff0c;有如下特点&#xff1a; 细分需求、任务、缺…

一篇五分生信临床模型预测文章代码复现——Figure 4-6 临床模型构建(七)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

Redis简介与使用

Redis简介与使用:数据保存在内存。&#xff08;mysql数据保存在硬盘&#xff09;是一个 高性能的key-value数据库NoSQL&#xff08;非关系数据库&#xff09;和SQL数据库&#xff08;关系数据库&#xff09;比较&#xff1a;适用场景不同:sql数据库适合用于关系特别复杂的数据查…

Java8-

https://blog.51cto.com/u_14014612/5677262 Stream到底是什么呢&#xff1f; 是数据渠道&#xff0c;用于操作数据源&#xff08;集合、数组等&#xff09;所生成的元素序列。 “集合讲的是数据&#xff0c;Stream讲的是计算&#xff01;” 流的构成 当我们使用一个流的时…