无符号数与有符号数的操作

void sum(void)  
{  
     unsigned int a = 6;  
     int b = -10;  
     if(a + b > 6)  
         puts(">6");  
     else  
         puts("<6");  
} 

.当混合不同类型的变量进行计算时,便可能会发生类型转换
相同类型的数据在转换时有规则可循:
   字符必须先转换为整数(C语言规定字符类型数据和整型数据之间可以通用)
   short型转换为int型(同属于整型)
   float型数据在运算时一律转换为双精度(double)型,以提高运算精度(同属于实型)
   赋值时,一律是右部值转换为左部类型
[注]
     当整型数据和双精度数据进行运算时,C先将整型数据转换成双精度型数据,再进行运算,结果为双精度类型数据
     当字符型数据和实型数据进行运算时,C先将字符型数据转换成实型数据,然后进行计算,结果为实型数据


所以要特别的注意类型的默认转换规则:




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


x=100+'a'+1.5 * u+f/'b'-s * 3.1415926
其中,uunsigned型,ffloat型,sshort型,xfloat型。式中右面表达式按如下步骤处理:
1)首先将'a''b's换成int,将1.5f转换为double型。
2)计算100+'a',因'a'已转换为int型,于是此运算结果为197
3)计算1.5*u,由于1.5已转换为doubleuunsigned型,于是首先u转换为double,然后进行运算,运算结果为double
4)计算197+1.5 * u,先将197转换为double(如197.0000),其结果为double
5)计算f/ 'b'f已转换为double'b'已转换为int,于是先将'b'再转换为double,其结果为double
6)计算(197+1.5 * u+f / 'b',者均为double,于是结果也为double
7)计算s * 3.1415926,先将sint转换为double,然后进行运算,其结果为double
8)最后与前面得的结果相减,结果为double
9)最后将表达式的结果转换为float并赋给x




文章转载:http://blog.youkuaiyun.com/wuchuanpingstone/article/details/6729947#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值