工具用的顺手吗?
你的反馈能帮助我们做得更好
Objective-C运算符优先级与结合性速查对照表
此表是收录语法的参考子集,不执行或验证示例。数字是本站分组,不能替代所用语言版本的完整语法、类型和求值规则;例子保留原始代码与字面值。 参考来源
[]后缀与访问左结合用于数组或集合下标访问;在 Objective-C 中方括号也用于向对象发送消息。
items[index] / [view setNeedsLayout]()后缀与访问左结合改变表达式求值顺序,或调用 C 函数、Block、方法返回的函数指针。
(a + b) * c / NSLog(@"%@", text).后缀与访问左结合访问结构体成员,也常用于 Objective-C 属性的点语法。
point.x / object.title->后缀与访问左结合通过结构体指针访问成员。
node->nexta++后缀与访问左结合先取得原值,再将变量加 1。
index++a--后缀与访问左结合先取得原值,再将变量减 1。
index--+a一元运算右结合保留数值本身,通常用于明确表达正值。
+count-a一元运算右结合返回操作数的相反数。
-offset++a一元运算右结合先将变量加 1,再取得新值。
++index--a一元运算右结合先将变量减 1,再取得新值。
--index(type)一元运算右结合把表达式显式转换为指定 C 或 Objective-C 指针类型。
(UIView *)sender*a一元运算右结合读取指针指向位置的值。
*buffer&a一元运算右结合取得变量、结构体成员或对象指针变量的地址。
&error!一元运算右结合对布尔或条件表达式取反。
!isHidden~一元运算右结合对整数每一位取反。
~masksizeof一元运算右结合返回类型或表达式占用的字节数,结果类型为 size_t。
sizeof(CGPoint)*乘除取余左结合两个数值相乘。
width * scale/乘除取余左结合执行数值除法;整数除法会截断小数部分。
total / count%乘除取余左结合返回整数相除后的余数。
index % 2+加减运算左结合数值相加,也可用于指针与整数的偏移。
x + y-加减运算左结合数值相减,或两个指针相减得到元素距离。
max - min<<位移运算左结合将整数二进制位向左移动指定数量。
1 << bit>>位移运算左结合将整数二进制位向右移动指定数量。
flags >> 1>关系运算左结合判断左操作数是否大于右操作数。
count > limit>=关系运算左结合判断左操作数是否大于或等于右操作数。
count >= minimum<关系运算左结合判断左操作数是否小于右操作数。
index < total<=关系运算左结合判断左操作数是否小于或等于右操作数。
index <= lastIndex==相等比较左结合比较两个值是否相等;对象内容比较通常应使用 isEqual: 等方法。
status == 200!=相等比较左结合比较两个值是否不相等。
object != nil&按位运算左结合对两个整数逐位执行与运算。
options & NSCaseInsensitiveSearch^按位运算左结合对两个整数逐位执行异或运算。
mask ^ flag|按位运算左结合对两个整数逐位执行或运算,常用于组合选项位。
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight&&逻辑运算左结合短路与;左侧为假时不再计算右侧表达式。
view != nil && !view.hidden||逻辑运算左结合短路或;左侧为真时不再计算右侧表达式。
cached || [self reloadData]?:条件运算右结合根据条件在两个表达式之间选择一个结果。
title.length ? title : @"Untitled"=赋值运算右结合把右侧表达式结果写入左侧变量或属性。
self.title = title/=赋值运算右结合将左值除以右侧表达式后再赋回左值。
scale /= 2*=赋值运算右结合将左值乘以右侧表达式后再赋回左值。
height *= ratio%=赋值运算右结合将左值取余后再赋回左值。
index %= count+=赋值运算右结合将右侧表达式加到左值上并赋回。
x += delta-=赋值运算右结合从左值中减去右侧表达式并赋回。
remaining -= used<<=赋值运算右结合左移指定数量后赋回左值。
flags <<= 1>>=赋值运算右结合右移指定数量后赋回左值。
flags >>= 1&=赋值运算右结合执行按位与后赋回左值。
options &= allowed^=赋值运算右结合执行按位异或后赋回左值。
mask ^= flag|=赋值运算右结合执行按位或后赋回左值。
options |= UIViewAnimationOptionCurveEaseInOut,逗号运算左结合从左到右依次求值多个表达式,整个表达式结果为最后一个表达式的值。
i++, j--概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
这张速查表把 Objective-C 常见表达式符号按15个优先级档位分组,页面数字越小表示优先级越高。你可以搜索符号、名称、说明、示例或档位数字,也可以按运算符分类和结合性筛选;结果卡片同时给出符号、简述和代码例子,并可复制符号或例子。
表里既有 C 表达式运算符,也会遇到 Objective-C 的消息表达式和属性点语法。例如方括号可用于数组下标,也用于向对象发送消息;Apple Objective-C 文档说明了消息表达式的括号写法和点语法。
优先级决定不同层级的运算符如何组合;结合性决定同一层级连续出现时如何分组。乘法高于加法,所以 2 + 3 * 4 按 2 + (3 * 4) 分组,结果为14。赋值符号是右结合,因此 a = b = c 按 a = (b = c) 分组。
分组并不等于程序一定按该方向依次执行所有子表达式。C标准用语法规则定义优先级和结合性,但副作用和子表达式求值顺序另有规则。ISO/IEC 9899:2024(WG14 N3220工作草案)提供了 C 表达式语法的原始依据;Objective-C扩展语法还需结合语言文档查看。
指南
按步骤完成操作,并通过示例核对输入与结果。
输入 &&、?:、按位 或某个档位数字。搜索会匹配符号、名称、描述、示例和优先级档位。
需要看算术、比较、逻辑或赋值时,选择相应分类;不确定类别则保留“全部”,再用关键词筛选。
同档位的连续表达式要参考左结合或右结合。例如 a - b - c 按 (a - b) - c 分组。编写代码时可把分组写成括号,减少读者猜测。
复制符号或示例后,把变量名换成自己的表达式,再对照代码上下文检查类型、短路条件和副作用。
场景
查看这项工具在不同工作与生活流程中的用法。
遇到位运算与比较混写的条件时,先分别查看两类运算符的优先级,再用括号明确期望分组。
初学 Objective-C 或 C 表达式时,按分类浏览符号说明和示例,逐步建立“优先级先分组、结合性处理同档”的阅读习惯。
复习逻辑、条件和赋值表达式时,可搜索关键符号并复制示例到自己的练习文件,再用编译器验证目标语言模式。
问答
集中解答高频疑问与容易混淆的问题。
不是。1到15是页面用于排序展示的档位标号,便于快速比较;语言规范以语法规则表达分组,不规定这套页面编号。
不表示。结合性说明表达式如何分组,例如 a - b - c 解析为 (a - b) - c;实际副作用求值顺序由语言规则另行规定。
消息表达式使用方括号语法,属于Objective-C语言表达式的一部分;通用C运算符表只能解释相应C运算符规则,涉及消息语法时应同时查看Objective-C语言资料。
须知
使用前了解适用范围、结果限制与必要提醒。
++/-- 放在同一档位记录;C语法区分后缀和一元形式。不能仅凭这个合并条目判断二者具有相同优先级,涉及自增、自减时请查正式语言资料。推荐
查找相关工具、专题与可用的 API 能力。