c语言 字符转int型,C语言—类型之间的转换

原标题:C语言—类型之间的转换

当混合不同类型的数据进行计算时,便会发生类型转换。

当不同类型的数据进行计算时,应首先将操作数转换成相同的数据类型,然后再进行计算。

类型转换有两种形式,即隐式类型转换和显示类型转换。

隐式类型转换

所谓隐式类型转换就是在编译时由编译器程序按照一定规则自动完成,而不需要人为的干预。因此,在表达式中如果有不同类型的数据参与同一运算时,编译器就在编译时自动按照规定的规则将其转换为相同的数据类型。

C语言规定的转换规则是由低级向高级转换。例如,如果一个运算符带有两个类型不同的操作数时,那么在操作之前先将较低的类型转换为较高的类型,然后进行运算,运算结果是较高的类型。更确切地说,对于每一个算术运算符,都遵循如图所示的规则。

223046f943b655c9f1dc0617a8b876a8.png

当整型数据和双精度数据进行运算时,先将整型数据转换成双精度型数据,再进行运算,结果为双精度类型数据。

当字符型数据和实型数据进行运算时,C先将字符型数据转换成实型数据,然后进行计算,结果为实型数据。

注意:在赋值语句中,如果赋值号左右两端的类型不同,则将赋值号右边的值转换为赋值号左边的类型,其结果类型还是左边类型。

也可以将图3-3所示的规则用图3-4表示。图3-4中的水平箭头表示必定转换,纵向箭头表示两个操作对象类型不同时的转换方向。

f4058e4f54a51889ae0f953e5dfbbf2f.png

下面举例说明类型转换的规则。例如执行:

float x;

x = 100 + 3.1415926

会按如下步骤进行处理:首先将整型100转换为double型,然后进行运算,其结果为double型。最后将表达式的结果转换为float并赋给x。

显式类型转换

显示类型转换又叫强制类型转换,它不是按照前面所述的转换规则进行转换,而是直接将某数据转换成指定的类型。这以在很多情况下简化转换。例如,

int i;

i = i + 9.801;

按照隐式类型转换处理方式,在处理i=i+9.801时,首先整型i转换为double型,然后进行相加,结果为double型,再将double型转换为整型赋给i。

int i;

i = i + (int)9.801;

这时直接将9.801转换成整型,然后与i相加,再把结果赋给i。这样可把二次转换简化为一次转换。

显示类型转换的方法是在被转换对象(或表达式)前加类型标识符,,类型标识符用小括号括起来,其格式是:

(类型标识符)表达式

例如,有如下程序片段:

int main()

{

int a = 1;

int b = 0;

float c = 1.8f;

b = a + (int)c;

printf("b=%d\n",b);

return 0;

在上述程序的运行过程中,在执行语句b=a+int(c)时,将c的值临时强制性转化为int型,但变量c在系统中仍为实型变量,也就是说,强制类型转换不会改变变量的原值,这一点很重要,不少初学者忽略了这个问题。

责任编辑:

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

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

相关文章

Java高级面试题!java构造方法的作用和特点

1. Redis面试专题 绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里以面试题的形式对 Redis 常见问题做一个总结,解决大家的知识盲点。 什么是Red…

c语言程序改频率,求问。这个fft c语言程序 采样的声音频率为多少?

timernum,timernum2,LEDnum3,Ltime;//用于分离/*加入数组用于显示相应led灯数目*/uchar lednum[]{0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//0-7的显示数组 P2组控制int xdata FftReal[SAMPLE_NUM];int xdata FftImage[SAMPLE_NUM];sbit p30P3^0;sbit p31P3^1;sbit p3…

Java高级面试题!java编程思想怎么学

专题5:Java序列化 1、什么是java序列化,如何实现java序列化? 2、保存(持久化)对象及其状态到内存或者磁盘 3、序列化对象以字节数组保持-静态成员不保存 4、序列化用户远程对象传输 5、Serializable 实现序列化 6、writeObject 和 readO…

计算星期c语言编码,[转载]计算任何一天是星期几的C语言源代码.

[转载]计算任何一天是星期几的C语言源代码.#include int main(){int day,mn,yr,i,days0,s,k;int mont[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};char wek[][9]{ {S,u,n,d,a,y},{M,o,n,d,a,y},{T,u,e,s,d,a,y},{W,e,d,n,s,d,a,y},{T,h,u,r,s,d,a,y},{F,r,i,d,a,y},{S,a,t,u,…

Java高级:mysqllimit两个参数

零基础如何学习Java? 首先,你要明白一点,Java入门不难! 无论你是从事哪个行业,兴趣一定是最好的老师,也是你学习的动力。 学习方式1:自学 自学模式其实我个人不建议绝大部分的人选择&#x…

db2 c语言游标名称可以是变量,mysql c语言 游标能取多行吗

满意答案xuyingcxm2015.02.03采纳率:45% 等级:12已帮助:7182人1、 无返回结果语句,如:INSERT,UPDATE,DROP, DELETE等2、 select语句返回单行变量并可传给本地变量(select ..into)3、 返回多行结果集的select语句,并…

从入门到精通!javaidea安装教程

一、秒杀系统架构设计都有哪些关键点? 二、设计秒杀系统时应该注意的5个架构原则 架构原则:“4要1不要” 1.1.数据要尽里少 1.2. 请求数要尽里少 1.3.路径要尽里短 1.4.依赖要尽里少 1.5. 不要有单点2不同场景下的不同架构案例 三、如何才能做好动静分离&#xff1…

-wl是不是c语言的标识符,C语言基础知识考试

第一章 C语言基础知识一、选择题1.C语言规定,必须用 作为主函数名。(0级) A)Function B)include C)main D)stdio2.一个C程序可以包含任意多个不同名的函数,但有且仅有一个 ,一个C程序总是从 开始执行。(0级) A)过程 B)…

从入门到精通!java可视化编程软件哪个好

1、我往Redis里写的数据怎么没了? 使用Redis的同学你要明白一点,你为什么用Redis?用redis的作用是什么?用redis的好处是什么?凡事多思考一下为什么,多想想背后的原因。 就在不久前有朋友跟我说过&#xf…

学生档案c语言编程,学生档案管理问题

/* 一个修改版本 */#include struct student{int num;char name[10];char sex;char address[20];};struct student stu[3] {{000, "li lin", m, "103 beijing road"},{001, "zhang fun", m, "130 shanghai road"},{002, "wang …

从思维图到基础再到深入,java空间查询

蚂蚁金服一面: 先自我介绍,讲讲自己基础掌握情况,以及项目经历平时会用到哪些数据结构?链表和数组的优缺点?解决hash冲突的方法有哪些?讲讲自己对HashMap的理解,以及和Weakhashmap的区别&#…

c语言中如何取消最后一个空格,新人提问:如何将输出时每行最后一个空格删除...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

从零开始学Java编程!java集合类详解和使用

目录 一、冒泡排序 二、选择排序 三、插入排序 四、快速排序 五、归并排序 六、希尔排序 七、堆排序 八、基数排序&#xff08;桶排序&#xff09; 九、递归 十、链表 十一、栈 十二、队列 十三、二叉树 最后 由于篇幅有限&#xff0c;这里就不一一罗列了&#xff0c;20道常见…

go语言调用c 的头文件 so,Golang生成共享库(shared library)以及Golang生成C可调用的动态库.so和静态库.a...

Golang类似于C的静态语言&#xff0c;效率也接近于C&#xff0c;如果Golang也可以导出可供C调用的库&#xff0c;那可以和很多高级语言say goodbye了&#xff0c;goodbye似乎又有点武断&#xff0c;但至少说&#xff0c;Golang可以做很多事&#xff0c;而且效率优于很多高级语言…

从青铜到王者的路线,java不同系统间数据同步

深耕技术&#xff0c;啃下22个技术点 互联网行业更新换代非常快&#xff0c;行业常态便是不断学习&#xff0c;因此这些主流技术你一个都不能落下&#xff01; ①并发编程 Java并发编程是整个Java开发体系中最难以理解&#xff0c;但也是最重要的知识点之一&#xff0c;因此学习…

c语言 大雨 班上多个同学准备,2015年计算机二级考试《C语言》提高练习题(7)

1[单选题] 若有C语言表达式23*47/3&#xff0c;以下选项中叙述正确的执行顺序是A.先执行3*4得12&#xff0c;再执行212得14&#xff0c;再执行7/3得2&#xff0c;最后执行142得16B.先执行3*4得12&#xff0c;再执行7/3得2.5&#xff0c;最后执行2122.5得16.5C.先执行7/3得2&…

从青铜到王者的路线,java枚举类使用场景

一、先来解读&#xff1a;23种设计模式要点 1.单例模式&#xff08;Singleton Pattern&#xff09; 2.工厂模式 3.抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09; 4.模板方法模式&#xff08;Template Method Pattern&#xff09; 5.建造者模式&#xff08;Bu…

android tag的作用,Android中的Context的作用(2)

ContextImpl关键成员和函数/*** Common implementation of Context API, which provides the base* context object for Activity and other application components.*/classContextImplextendsContext {privatefinalstaticString TAG "ContextImpl";privatefinalsta…

企业级项目实战讲解!javamap排序规则

一、服务发布简介 分布式系统架构下&#xff0c;服务发布是一件很麻烦的事情&#xff0c;特别是在构建自动发布流程和灰度测试的策略两个核心方面。通常情况下如果不涉及数据层面的灰度流程&#xff0c;服务可以灰度上线&#xff0c;或者滚动上线&#xff0c;这两种方式很常用…

android页面设置背景图片大小,android页面设置background为图片后,页面滑动掉帧问题...

最近接手的一个android项目里面&#xff0c;有个viewpager3个fragment的页面&#xff0c;就是很常见的可以左右滑动切换页面的那种布局。接手的时候告诉我&#xff0c;这个页面有卡顿现象&#xff0c;性能需要优化。一开始觉得是fragment里面做了太多耗时操作的原因&#xff0c…