数据类型和运算符(运算符)

时间:2023-01-29 09:34:20

运算符

算术运算符

Objective-C 支持所有的基本算术运算符

 /:除法运算符。除法运算符有些特殊,如果除法运算符的两个操作数都是整数类型,则计算结果也是整数,就是将自然
数除法的结果断取整。
%:求余运算符。它要求运算符两边的操作数必须是整数,他的计算结果是使用第一个操作数来除以第二个操作数,得到
一个整除的结果后,剩下的值就是余数
++:自加运算符。这是一个单目运算符,运算符既可以出现在操作数的左边,也可以出现在操作数的右边。如果把++放在
操作数的左边,则先把操作数加1,然后才把操作数放入表达式中参与算;反之则先把操作数参与运算,然后再把操作数加1。
--:自减运算符。也是一个单目运算符,效果与++基本类似,只是将操作数的值减1。
注:
自加和自减只能用于操作数值型变量(包括整型和浮点型),不能用于操作数值型直接量、常量或表达式。

Objective-C并没有提供其他更复杂的运算符,如需要完成乘方、开方等运算,可借助ANSIC标准库中

例:
double a = 3.2;
//求a的5次方,并将计算结果赋值给b
double b = pow(a , 5);
//求a的平方根,并将计算结果赋值给c
double c = sqrt(a);
//计算随机数,返回0~10之间的一个伪随机数
double d = arc4random() % 10;
//求1.57的sin函数值:1.57被当成弧度数
double e = sin(1.57);

赋值运算符

位运算符

1、&:按位与。
2|:按位或。
3、~:按位非。
4、^:按位异或。
5、<<:左位移运算符。
6、>>:右位移运算符。
第一个操作数 第二个操作数 按位与 按位或 按位异或
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
注:
所有的数字在计算机底层都是以二进制形式存在的,源码是直接将一个数值换算成二进制数。但计算机以补码形式保存
所有的整数。补码的计算原则是:正数的补码和原码完全相同负数的补码是其反码加1;反码是对原码按位去反,只是最高位
(符号位)保持不变。
当进行位移运算时,左移n位就相当于乘以2的n次方,右移则是除以2的n次方(如果不能整除,实际返回的结果为小于除
法结果的最大整数)。不仅如此,进行位移运算只是得到了一个新的运算结果,而原来的操作数本身是不会改变的。

扩展后的赋值运算符

+=: 对于x+=y,即对应于x=x+y。
-=: 对于x-=y,即对应于x=x-y。
*=: 对于x*=y,即对应于x=x*y。
/=: 对于x/=y,即对应于x=x/y。
%=: 对于x%=y,即对应于x=x%y。
&=: 对于x&=y,即对应于x=x&y。
|=: 对于x|=y,即对应于x=x|y。
^=: 对于x^=y,即对应于x=x^y。
<<=: 对于x<<=y,即对应于x=x<<y。
>>=: 对于x>>=y,即对应于x=x>>y。

比较运算符

逻辑运算符

&&(与):必须两个操作数都为真才返回真;否则返回假。
||(或):只要两个操作数中又一个为真,就可以返回真;否则返回假
!(非):只需要一个操作数,如果操作数为真,则返回假;如果操作数为假,则返回真。
^(异或):当两个操作数不同时才返回真,如果两个操作数相同,则返回假。

逗号运算符

三目运算符

大部分时候三目运算符都作为if else的精简写法

例:
expression ? if-true-statement : if-false-statement;