Objective-C表达式-整数运算和一元负号运算符

在二元运算的基础上, 苹果开发者Mike引入 整数运算的概念。大家可以看下范例代码4-3:

01   // More arithmatic expressions
02  
03   #import <Foundation/Foundation.h>
04  
05   int   main   ( int   argc ,   const   char   *   argv [])   {
06        NSAutoreleasePool   *   pool   =   [[ NSAutoreleasePool   alloc ]   init ];
07  
08        int          a   =   25 ;
09        int          b   =   2 ;
10        float      c   =   25.0 ;
11        float      d   =   2.0 ;
12       
13        NSLog ( @"6 + a / 5 * b = %i" ,   6   +   a   /   5   *   b );
14        NSLog ( @"a / b * b = %i" ,   a   /   b   *   b );
15        NSLog ( @"c / d * d = %f" ,   c   /   d   *   d );
16        NSLog ( @"-a = %i" ,   - a );
17       
18        [ pool   drain ];
19        return   0 ;
20   }

最终输出结果:

6 + a / 5 * b = 16

a / b * b = 24

c / d * d = 25.000000

-a = -25


大家可以看到第一个表达式,因为除法和乘法优先级大于加法它们优先计算后再加6得到结果16

第二条NSLog语句引入了一个新的误区。你希望a除以b再乘以b的操作返回a,也就是25,但结果确是24,难道计算机在某个地方迷失了方向?实际情况是因为这个表达式是采用整数运算来求值的。数字的小数部分在运算中丢失。因此计算a除以b,即25除以2时,得到的中间结果是12,而不是期望的12.5。这就是结果为什么最后是24的原因。

第三条,因为是浮点值运算,所以结果正常。

在最后一条中,使用了 一元负号运算符对变量a的值求反。这个一元运算符是用于单个值的运算符,扮演的角色是对一个值求反。

关于 优先级,与其他算术运算符相比,一元负号预算符具有更高的优先级。

MikeCSDN上传的源代码链接 Arithmetic_Expressions
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值