4-运算符和表达式

最后更新于:2022-04-01 00:17:02

### 运算符和表达式 运算符可以分成如下几种:  •算术运算符, +, ―, *, /, %, ++, ―― •关系运算符, >, =, <=, ==, != •布尔逻辑运算符, ! , &&, ||  •位运算符, &, | , ^, ~ , >>, << •赋值运算符, +=, ―=, *=, /=  •条件运算符, ? : ### 短路与和短路或 布尔逻辑运算符中有两个比较特殊的运算符号,  “&&” 和“|| ” ,  其中“&&” 为短路与,  如果对两个表达式进行计算, 若第1 个表达式的值为“假” ,  则与第2个表达式的值无关, 结果肯定为“假” ,  所以此时第2个表达式不再计算。  “|| ” 为短路或, 如果对两个表达式进行计算, 若第1 个表达式的值为“真” ,  则与第2个表达式的值无关, 结果肯定为“真” , 所以此时第2个表达式不再计算。 举例如下: ~~~ int i = 0; int a = 10; int b = 9; if ((a > b) | (i++ == 1)) { NSLog(@" a > b"); } else { NSLog(@" a < b"); } NSLog(@"i = %i", i); 结果是a > b和i =1 ~~~ ### 位运算符 位运算符有如下几个运算符: &, | , ^, ~ , >>, 其中&是按位与, | 是按位或, ^是异或, ~是取反, >>是右位移, <<是左位移。 位运算符举例: 假设有两个二进制数16位整数(short int) , a=1001110110011101 和b=0011100100111001 ,  则有如下结果; 它们的运行结果如下: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-31_5684a3f0324db.jpg) ### 条件运算符 条件运算符的语法格式为:  布尔表达式? 返回值1: 返回值2 当布尔表达式的值为真时, 返回表达式1 的值, 否则返回表达式2的值。  举例如下: ~~~ int i = 70; int i3 =70 NSString *res = i3 > 60 ? @"及格" : @"不及格" ; NSLog(@"res = i3 > 60 %@ ", res); ~~~ 结果是“及格” ### 表达式 表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等 以能求得数值的有意义排列方法所得的组合。 约束变量在表达式中已被指定数值,而自由变量则可以在表达式之外另行指定数值。 ### 表达式的意义 给与自由变量一些数值指定,可以给与一个表达式数值, 即使对于一些自由变量的值,表示式或许没有定义。 因此,一个表达式代表一个函数,其输入为自由变量的定值,而其输出则为表示式因之后所产生出的数值。 举例来说: 表达式x/y,分别使自由变量x和y定值为10和5,其输出为数字2; 但在y值为0时则没有定义。 一个表达式的赋值和算符的定义以及数值的定义域是有关联的。 两个表达式若被说是等值的,表示对于自由变量任意的定值, 两个表达式都会有相同的输出,即它们代表同一个函数。 一个表达式必须是合式的。亦即,其每个算符都必须有正确的输入数量,在正确的地方。 如表达式2+3便是合式的;而表达式*2+则不是合式的,至少不是算术的一般标记方式。 表达式和其赋值曾在20世纪30年代由阿隆佐·邱奇和Stephen Kleene在其λ演算中被公式化。 λ演算对现代数学和电脑编程语言的发展都曾有过重大的影响。 ### 表达式的分类 1、算术表达式: 算术表达式是最常用的表达式,又称为数值表达式。 它是通过算术运算符来进行运算的数学公式。 算术运算符 1)乘法运算符 XY 求X乘Y的值 举例:6*7=42 2) 除法运算符 / X/Y 求X除Y的值(浮点数运算) 举例:2.76/1.2=2.3 3)整除运算符 div X div Y 求X除Y的整数商(对整型数计算) 举例:25=5 4)取余运算符 Mod X mod Y 求X除Y的余数(对整型数运算) 举例:25 mod 4=1 5)加法运算符 + X+Y 加法运算 举例:32+2=34 6)减法运算符 - - X-Y 减法运算 举例:48-21=27 2、逻辑表达式 逻辑运算的结果只有两个:True(真)和False(假)。 OC提供了六种关系运算符和三种逻辑运算符: ==(等于)、(大于)、>=(大于等于)、!=(不等于) !(非)、&&(与)、||(或) 表达式的运算优先顺序 在进行表达式的转换过程中,必须了解各种运算的优先顺序, 使转换后的表达式能满足数学公式的运算要求。 运算优先顺序为: ~~~ 括号→函数→乘方→乘、除→加、减→字符连接运算符→关系运算符→逻辑运算符 ~~~ 如果同级的运算是按从左到右次序进行;多层括号由里向外。 例: ~~~ (10+6)*3^2*COS(1)/2*8+7 ① ④ ③ ⑤ ② ⑥ ⑦ ⑧ Sqrt(Abs(p/n-1))+1 ④ ③ ① ② ⑤ ~~~
';