运算符符号表

197 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第44天,点击查看活动详情

运算符符号表

ObjectScript包括以下运算符:

操作符执行的操作
.对象属性或方法访问。
()数组索引或函数调用参数。
+加法(二元)、正(一元)
减法(二元)、负数(一元)
*乘法
/除法
\整除
**指数
#余数
_连接符
'逻辑补码(NOT)
=测试是否相等、赋值
'=不相等
>大于
'><=不大于(小于或等于)
<小于
'<>=不小于(大于或等于)
[包含
]遵循
]]排序后
&&&逻辑AND(&&是与)
! ,``逻辑或(``是或)
@间接
?模式匹配

运算符优先

  • ObjectScript中的运算符优先级严格从左到右;在表达式中,操作按出现的顺序执行。这与其他语言不同,在其他语言中,某些运算符具有比其他运算符更高的优先级。可以在表达式中使用括号,以强制某些操作先于其他操作进行。
	w "1 + 2 * 3 - 4 * 5 = ",1 + 2 * 3 - 4 * 5,! 
	w "1 + (2 * 3) - 4 * 5 = ",1 + (2 * 3) - 4 * 5,!  
	w "1 + (2 * (3 - 4)) * 5 = ",1 + (2 * (3 - 4)) * 5,!  
	w "1 + (((2 * 3) - 4) * 5) = ",1 + (((2 * 3) - 4) * 5),!
  • 一元运算符优先于二元算术运算符。 首先执行数字表达式并执行任何一元操作。然后,对表达式求值并生成结果。
	w "-1 - 2 = ", -1 - 2,!       
	w "-1 + -2 = ", -1 + -2,!     
	w "-(1 - --2) = ", -(1 - 2),!
  • 可以通过使用圆括号将表达式相互嵌套来更改计算顺序。圆括号将包含的表达式(算术表达式和关系表达式)分组,并控制对表达式执行操作的顺序。
	w ((4 + 7) > (6 + 6)),!       
	w (4 + 7 > 6 + 6),!
	w 3 && 2 = 1,!
	w 1 = 3 && 2,!
	
	s var = 10, target = 9
	if var = 10 * (target < 10) {
		w !,"true" 
	} else {
		w !,"false" 
	}

逻辑比较运算符

逻辑表达式

逻辑表达式最常用于:

  • if命令
  • $select函数
  • 后置条件表达式

在布尔运算中,任何计算结果为非零数值的表达式都返回布尔值1(True)。任何计算结果为零数值的表达式都返回布尔值0(FALSE)。Caché将非数字字符串计算为具有零数值。

  • 可以使用逻辑运算符组合多个布尔逻辑表达式。与所有Caché表达式一样,它们严格按照从左到右的顺序进行计算。这里有两种类型的逻辑运算符:常规逻辑运算符(&)。和短路(双)逻辑运算符(&&||)。
  • 当使用双逻辑运算符组合逻辑表达式时,Caché只计算确定布尔结果所需的表达式。例如,如果有多个AND测试,则返回0的第一个表达式确定总体布尔结果。不计算此表达式右侧的任何逻辑表达式。可以避免不必要的表达式计算耗时。
	if $$One() & $$Two() {
		w !,"true" 
	} else {
		w !,"false" 
	}
	
	if $$One() && $$Two() {
		w !,"true" 
	} else {
		w !,"false" 
	}

	if $$One() , $$Two() {
		w !,"true" 
	} else {
		w !,"false" 
	}
One() 
	w !,"one"
	q 0
Two()
	w !,"two"
	q 1

Not运算符(')

  • NOT运算符反转布尔操作数的真值。如果操作数为TRUE(1),则NOT运算符赋值FALSE(0)。如果操作数为FALSE(0),NOT运算符赋值TRUE(1)。
	w '0,!
	w '1,!
	w 3 > 5,!
	w 3 '> 5,!

算术运算符

  • 一元运算符,对其单个操作数进行数值解释。如果其操作数有字符串值,则将其转换为数字值。它通过将字符串的字符顺序解析为数字来实现这一点,直到它遇到无效字符。然后,它返回字符串的任何前导部分是格式良好的数字。
	w + "32 apple",! 
	w - "64 banana" _ "orange",!

加法运算符(+)

  • 加法运算符产生两个数值解释的操作数之和。它使用任何前导有效数字字符作为操作数的数字值,并生成操作数的数字值之和的值。
	w "32 apple" + "32 apple",!
	w 32 + 32

减法运算符(-)

  • 减法运算符产生两个数值解释的操作数之间的差值。它将任何前导的有效数字字符解释为操作数的数字值,并生成减法后的余数的值。
	w 5211314 - 7758521,!
	w "32 apple" - "two apple",!

乘法运算符(*)

  • 乘法产生两个数值解释的操作数的乘积。它使用任何前导数字字符作为操作数的数字值,并生成乘积结果。
	w 521.1 * 2,!
	w "32 apple" * "2 apple",!

除法运算符(/)

  • 除法产生将两个数值解释的操作数相除的结果。它使用任何前导数字字符作为操作数和乘积的数字值,结果就是商。
	w 1 / 1.5,!
	w "32 apple" / "2 apple",!
  • 操作数没有前导数字字符,则认为其值为零。不允许将数字除以零。返回<Divide>错误消息.
    w "32 apple" / "apple",!
    w 1 / 0,!