博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类型转换
阅读量:4981 次
发布时间:2019-06-12

本文共 1207 字,大约阅读时间需要 4 分钟。

一 自动类型转换

1. 非赋值运算的类型转换

   

水平方向的转换:所有的 char, short 型自动转换成 int 型,左右的 unsigned short 型自动转换成 unsigned 型,所有的 long 型自动转换成 unsigned long 型,所有的 float 型自动转换成 double 型。

垂直方向:经过水平方向的转换,如果参加运算的数据类型仍然不相同,再将数据自动转换成其中级别最高的类型。

栗子 -----------

设变量  ac 的类型是 char, 变量 bi 的类型是  int , 变量 d 的类型是 double ,求解表达式 ac + bi - d。运算次数是:先计算 ac + bi, 将 ac 转换为 int 型后求和,结果是 int 型, 再将 ac + bi 的和转换为 double 型, 再与 d 相减, 结果是 double 型。

2.赋值运算的类型转换

赋值运算时,将赋值号右侧表达式的类型自动转换成赋值号左侧变量的类型。

例如:

.变量 x 的类型是 double, 计算表达式 x = 1. 运算时,先将 int 型常量  1 转换成 double 型常量 1.0 ,然后赋值给 x , 结果是 double 型。

.short a;  char b; long c ;  c = a + b;  先计算 a + b, 将 a, b 转换为 int 型求和,结果是 int 型;再将和转换成 c 的类型 long ,然后赋值给 c, 结果是long 型。

利用上面的规则,如果赋值号右侧表达式的类型比赋值号左侧变量的类型界别高,运算精度会降低。

如 int i = 2.56  运算时先将 double 型常量 2.56 转换成 int  型常量 2, 然后赋值给 i , 结果是 int 型。

所以:在赋值运算时,赋值号两侧的数据类型最好相同,至少右侧数据的类型要比左侧数据的类型几倍地,或者右侧数据的值在左侧变量的取值范围内,否则会导致运算精度降低,甚至出现意想不到的结果。

二 强制类型转换

使用强制类型转换运算符,可以将一个表达式转换成给定的类型。

(类型名)表达式;

例:(int)3.8 = 3;

注意:无论是自动类型转换,还是强制类型转换,都是为了本次运算的需要,对数据的类型进行临时转换,并没有改变数据的定义,其本质依然还是自己原先的数据类型。

例如现在有 int i;  (double)i 是 double 型,i 的类型并没有改变,仍然是 int 型。

强制类型转换运算符的优先级较高,结合性是从右到左。

(int)3.8 + 1.3 等价 ((int) 3.8) + 1.3 结果是 4.3; 而 (int)(3.8 + 1.3) 的结果是 5.

转载于:https://www.cnblogs.com/hyhl23/p/4161066.html

你可能感兴趣的文章
类对象
查看>>
[Voice communications] 声音的滤波
查看>>
软件建模——第9章 毕业论文管理系统—面向对象方法
查看>>
[SDOI2008]洞穴勘测
查看>>
Difference between Linearizability and Serializability
查看>>
IDEA使用操作文档
查看>>
UIView
查看>>
添加日期选择控件
查看>>
bzoj4765: 普通计算姬 (分块 && BIT)
查看>>
看完漫画秒懂区块链
查看>>
Oracle命令类别
查看>>
stc12c5a60s2驱动TEA5767收音机模块硬件调试总结
查看>>
vue中提示$index is not defined
查看>>
css选择器
查看>>
ASP.NET上传下载文件
查看>>
Galaxy Nexus 全屏显示-隐藏Navigation Bar
查看>>
Spring中使用Velocity模板
查看>>
上周热点回顾(8.18-8.24)
查看>>
Feature toggle
查看>>
day02
查看>>