打印
[ZLG-MCU]

C语言数据运算注意:自动类型转换

[复制链接]
2027|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
思行合一|  楼主 | 2011-2-26 01:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自动类型转换:
字符型数据可以与整型数据通用,因此,整型、字符型、实型(包括单、双精度)数据可以出现在一个表达式中进行混合运算。例如:已定义i为int变量,f为float型变量,d为double型变量,l为long型变量,有下面的式子:
100+'A'+i*f-d*l
[url=file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles1A70DC/clip_image002[3].gif]file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles1A70DC/clip_image002_thumb.gif[/url]
是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算,转换的规则如图2-2所示。图中横向箭头表示必定的转换,如字符数据必定先转换为整数,short型转换为int型,float型数据在运算时一律先转换成双精度型,以提高运算精度(即使是两个float型数据相加,也要先转换成double型,然后再相加)。
纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型与double型数据进行运算,先将int型的数据转换成double型。然后再进行两个同类型(double型)数据间运算,结果为double型。
注意:箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为int型先转成unsigned型,再转成long型,再转成double型。如果一个int型数据与一个double型数据运算是直接将int型转成double型。同理,一个int型与一个long型数据运算,也是先将int型转换成long型。
上式运算次序为:
①进行100+'A'的运算,先将'a'转换成整数65,运算结果为165;
②进行i*f的运算,先将i与f都转换成double型,运算结果为double型;
③整数165与i*f的值相加,先将整数165转换成双精度数(小数点后加若干个0,即165.000000),运算结果为double型;
④将变量l转换成double型,d*l结果为double型;
⑤将100+'A'+i*f的结果与d*l的结果相减,结果为double型。
上述的类型转换是由系统自动进行的。
转载请注明来自秦工的博客,本文地址:http://www.arm32.com/post/11003.html

相关帖子

沙发
明天我还来| | 2011-2-26 22:13 | 只看该作者
帮顶了。

使用特权

评论回复
板凳
黑发尤物| | 2011-2-27 10:18 | 只看该作者
到秦工的博客看看去

使用特权

评论回复
地板
bit6019| | 2011-2-27 10:21 | 只看该作者
恩,是个好博客

使用特权

评论回复
5
杜_U_ME| | 2011-2-27 10:55 | 只看该作者
比如一个  int *a;

b=(char*)a;

a是不会变化的是吧

小弟太弱,见谅

使用特权

评论回复
6
weimao228| | 2011-4-11 16:23 | 只看该作者
可是PICC的整型是16位的,转到字符型的只有低8位能够赋值的。

使用特权

评论回复
7
6019赵文| | 2011-4-11 21:28 | 只看该作者
不错,受教了

使用特权

评论回复
8
bnyuli| | 2011-4-12 15:06 | 只看该作者
不错 不错  受领教了

使用特权

评论回复
9
FVJFIFE| | 2011-4-12 22:19 | 只看该作者
受益匪浅啊

使用特权

评论回复
10
ty新气象| | 2011-4-17 17:40 | 只看该作者
:handshake

使用特权

评论回复
11
即时生效| | 2011-4-17 19:23 | 只看该作者
学习了

使用特权

评论回复
12
linas| | 2011-4-17 21:05 | 只看该作者
看看去。

使用特权

评论回复
13
huzixian| | 2011-4-19 22:37 | 只看该作者
受教了

使用特权

评论回复
14
ladygaga| | 2011-4-20 19:53 | 只看该作者
学习了。

使用特权

评论回复
15
foreverly| | 2011-6-20 17:10 | 只看该作者
秦工的博客火了。:D

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

1391

帖子

2

粉丝