objectC 数据类型转换

按照数据类型占用存储不同可以自动类型转换或强制类型转换,总的原则是小存储容量数据类型可以自动转换成为大存储容量数据类型。

不同类型数据间按照下面关系的从左到右(从低到高)自动转换,

_Boolcharshort int、枚举类型 -> int ->long int->long long-> float -> double -> long double

如果这些数据类型进行混合运算,运算中不同类型的数据先转化为同一类型,然后进行运算,转换从左到右自动转换,如表2-3所示。

2-3 类型转换先后顺序表

操作数1类型

操作数2类型

转换后的类型

_Boolcharshort int、枚举类型

int

int

_Boolcharshort int、枚举类型、int

long int

long int

_Boolcharshort int、枚举类型、intlong int

long long

long long

_Boolcharshort int、枚举类型、intlong intlong long

float

float

_Boolcharshort int、枚举类型、intlong intlong longfloat

double

double

_Boolcharshort int、枚举类型、intlong intlong longfloatdouble

long double

long double

 

如果有下面的表示式,其中,ffloat类型,iint类型,llong int 类型,sshort int类型,结果是什么类型?

f * i + l /s

运行结果为float类型,这是因为ffloat其它的操作数与float运算其结果就是float类型。

如果遵守类型转换是右到左情况,就需要强制类型转换了,强制类型转换语法形式上很简单,就是在数据前面加上(目标类型),但是这种转换是存在风险的,有可能造成数据的丢失,需要谨慎进行。例如:

         long int l = 6666666666;

         NSLog(@"l = %li",l);

         int i = (int)l;

         NSLog(@"i = %i",i);  

运行的结果是,其中6666666666数值已经超出了int类型的容量,因此出现了数据的丢失。

    l = 6666666666

    i = -1923267926

强制转换有的时候嵌入在其它的表达式里面,它会与运行的优先级交织在一起,情况就会变的更加复杂,假设有下面的几条语句:

int total = 3446;  

int n = 6;

float average = total / n;

运行完成float的变量average结果是574,小数点内容被截取掉了,如果我们采用下面的语句实现:

int total = 3446;  

int n = 6;

float average = (float)total / n;

运行完成float的变量average结果是574.333,这个数据要比上面计算的精确,这是因为(float)total先把int类型的total变量转换成为float类型的total变量。

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

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

相关文章

VC6启用运行时类型识别 (RTTI)

在程序中&#xff0c;当我们对多态类的基类指针使用typeid&#xff0c;就可以在运行时确定指针指向对象的实际类型&#xff0c;并输出对象类型的名字。 #include <cstdlib >#include <iostream >#include <typeinfo >usingnamespacestd; classB{ public …

爱快软路由设置DHCP多个LAN处于同一网段

&#xff08;0&#xff09;思路&#xff1a;eth0 启用扩展网卡&#xff0c;然后设置LAN1为DHCP。 &#xff08;1&#xff09;设置扩展网卡 &#xff08;2&#xff09;启用DHCP

[react] react16跟之前的版本生命周期有哪些变化?

[react] react16跟之前的版本生命周期有哪些变化&#xff1f; 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

前端招聘与前端卖身的困境

最近开始物色新公司&#xff0c;群里来了个招人的&#xff0c;说2.5万招高手。在众人的怂恿下&#xff0c;发了简历。 但结果是不如意的&#xff0c;经过他们一小时的评测&#xff0c;他们认为我的水平不过8k-10k&#xff0c;税前。我吐血了&#xff0c;还远低于我原来的呢&…

git 本地推送本地仓库到远程

github或者gitee远程新建空仓库&#xff0c;在本地推送已有的仓库到远程新仓库。 1、远程新建新仓库&#xff0c;例如stm32repo 2、本地仓库添加远程仓库 git remote add origin https://gitee.com/xxxx/stm32repo.git 3、本地仓库完成提交后&#xff0c;推送到远程仓库 gi…

无法对视图创建索引,因为该视图未绑定到架构

遇到这个问题&#xff0c;查了一位博主的文章&#xff0c;但是说的不是很详细&#xff0c;在这里说明白一些。 修改此问题 需要在 创建视图语句中加上 with SCHEMABINDING --创建索引视图 create view 视图名 with schemabinding as select 语句 go --创建索引视图需要注意的几…

[react] react怎么提高列表渲染的性能?

[react] react怎么提高列表渲染的性能&#xff1f; 使用webpack 做代码分割。使用hooks。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Windows编程中的映射模式和坐标转换

From: http://www.vczx.com/article/show.php?id1011820 一、Windows中的映射模式 1、Windows定义映射模式的目的 经过我的综合&#xff0c;Windows定义映射模的目的又以下几个方面&#xff1a;1、不同人的使用习惯。不同国家的&#xff0c;不同地区&#xff0c;以及不同的人…

C# 截取图片的方法

1、C#截取图片的方法 方法一、 一个像素一个像素的画&#xff0c;遍历每一个像素&#xff0c;速度慢 /// <summary> /// 截取一张图片的制定部分 /// </summary> /// <param name"bitmapPathAndName">原始图片路径名称<…

变压器油参数

以下体胀系数参考百度百科&#xff1a; 水银1.8210^-4 纯水2.0810^-4 煤油9.010^-4 酒精1.110^-3 汽油1.2410^-3 氢气3.6610^-3 氧气3.6710^-3 氨气3.8010^-3 空气 3.67610^-3 二氧化碳3.74110^-3 一切气体 ≈1/273 甘油 4.910^-4 乙醇 7.510^-4 相关&#xff1a…

Python用过的小知识备忘录

1. python中的优先权队列&#xff0c;priorityqueue用法&#xff1a;数字越小&#xff0c;表示优先级越高&#xff0c;越早被拿出 from queue import Queue from queue import PriorityQueue prioqueuePriorityQueue() prioqueue.put((1,hahaha)) prioqueue.put((5,ustc)) pr…

[react] 给组件设置很多属性时不想一个个去设置有什么办法可以解决这问题呢?

[react] 给组件设置很多属性时不想一个个去设置有什么办法可以解决这问题呢&#xff1f; es6展开运算符 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

cygwin This indicates that the /etc/passwd (and possibly /etc/group) files should be rebuilt 问题解决办法

From: http://blog.csdn.net/deaboway/article/details/6461587 我的Cygwin报&#xff1a; [css] view plaincopyYour group is currently "mkpasswd". This indicates that the /etc/passwd (and possibly /etc/group) files should be rebuilt. See the man p…

CSS布局教程:用DIV CSS实现国内经典式三行两列布局-CSS布局实例

我们碰到过很多的企业网站或其它小型的展示类网站&#xff0c;有一些共同的特点&#xff0c;即顶部放一个大的导航或BANNER&#xff0c;右侧是链接或图片&#xff0c;左侧放置内容&#xff0c;页面底部放置版权信息等。这样的形式是国内经典式的布局&#xff0c;我们这里不对它…

EC20模组使用MQTT库对接EMQX,基于STM32F407

一、说明 本lib库基于STM32F407编译&#xff0c;其他的cortexM4内核也支持&#xff0c;采用串口和EC20模组通信。 库包括两个文件&#xff1a;ec20_mqtt.h和ec20_mqtt.lib。使用时添加lib文件到工程中&#xff0c;头文件引用ec20_mqtt.h即可。 下载&#xff1a;https://gitee…

[react] 说说react diff的原理是什么

[react] 说说react diff的原理是什么 内存中存储两颗树&#xff0c;一颗树是已经渲染的树结构&#xff08;Current Tree&#xff09;&#xff0c;另一颗是即将变化的树&#xff08;Fiber Tree&#xff09;。 每次状态发生变化&#xff0c;会对原来的树结构进行遍历&#xff0c…

什么是I帧,P帧,B帧

From: http://blog.csdn.net/abcjennifer/article/details/6577934 视频压缩中&#xff0c;每帧代表一幅静止的图像。而在实际压缩时&#xff0c;会采取各种算法减少数据的容量&#xff0c;其中IPB就是最常见的。 简单地说&#xff0c;I帧是关键帧&#xff0c;属于帧内压缩。…

iOS 证书错误 Certificates下面的 App Store and Ad Hoc是灰的?? 点不了

原因 因为一个用户名下只能同时有一个发布证书&#xff0c;你之前建立了某个证书并且没有使用的话就无法再创建了&#xff0c;先把它撤销或者使用后才可以继续创建新的 转载于:https://www.cnblogs.com/yhj1787354782/p/4991182.html

linux中的memory management和page mapping

1 首先要说的最简单的是在一个process在运行的时候&#xff0c;它看到的内存是这个样子的。3G以后是给kernel使用的运行和动态分配的内存的空间&#xff0c;注意因为是process所看到的&#xff0c;下面全部都是虚拟地址空间。如下&#xff1a; 2 然后需要说的是Linux Physical …

[react] react的函数式组件有没有生命周期?

[react] react的函数式组件有没有生命周期&#xff1f; 没有 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题