VisualFreeBasic代码_运算符

2026-1-21 / 0 评论 / 60 阅读

运算符是用于执行程序代码运算的符号,它们会针对一个或多个操作数进行运算。运算符的种类繁多,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。下面将详细介绍这些运算符的基本概念和用法。

1. 算术运算符

算术运算符用于执行基本的数学运算,包括加(+)、减(-)、乘(*)、除(/)和取模(%)。

  • 加(+):将两个操作数相加。
dim aa as long = 1+2 ,bb as long = 3+4
aa += bb 
print aa ,aa+bb
  • 减(-):从第一个操作数中减去第二个操作数。
dim aa as long = 1-2 ,bb as long = 3-4
aa -= bb 
print aa,aa-bb
  • 乘(*):将两个操作数相乘。
dim aa as long = 1*2 ,bb as long = 3*4
aa *= bb 
print aa,aa*bb
  • 除(/):当两个操作数都是整数时,执行整数除法,结果也是整数,小数部分被丢弃;当操作数中包含浮点数时,执行浮点数除法,结果保留小数部分。
dim aa as long = 1/2 ,bb as long = 3/4
aa /= bb 
print aa,aa/bb
  • 取模(Mod):返回两个整数相除的余数。注意,负数取模的规则是结果的正负号由第一个操作数的正负号决定。
dim aa as long = 1 mod 2 ,bb as long = 3 mod 4
aa Mod= bb 
print aa,aa mod bb
  • 次方(^):计算数的指数次方
dim aa as long = 1 ^ 2 ,bb as long = 3 ^ 4
aa ^= bb 
print aa,aa ^ bb

2. 关系运算符

关系运算符用于比较两个操作数的大小关系,包括大于(>)、小于(<)、等于(=)、不等于(<>)、大于等于(>=)和小于等于(<=)。

  • 这些运算符返回的结果是布尔值(true或false),用于条件判断。
if 11<>22 or 3>6 then  .......
aa = 11= 22     '前面等号是 赋值,后面等号是关系运算

3. 逻辑运算符

逻辑运算符用于执行布尔逻辑运算,包括逻辑与(And)、逻辑或(OR)和逻辑非(Not)。

  • 逻辑与(And):当且仅当两个操作数都为真时,结果才为真。
a = 0 : b = 0 :print  (a And b)  '输出为 0
a = 1 : b = 0 :print  (a And b)  '输出为 0
a = 0 : b = 1 :print  (a And b)  '输出为 0
a = 1 : b = 1 :print  (a And b)  '输出为 1
  • 逻辑或(Or):当至少有一个操作数为真时,结果就为真。
a = 0 : b = 0 :print  (a Or b)  '输出为 0
a = 1 : b = 0 :print  (a Or b)  '输出为 1
a = 0 : b = 1 :print  (a Or b)  '输出为 1
a = 1 : b = 1 :print  (a Or b)  '输出为 1
  • 逻辑非(Not):将操作数的布尔值取反。
a = 0 : print  Not(a)  '输出为 1
a = 1 : print  Not(a)  '输出为 0
  • 逻辑与或(Eqv)
a = 0 : b = 0 :print  (a Eqv b)  '输出为 1
a = 1 : b = 0 :print  (a Eqv b)  '输出为 0
a = 0 : b = 1 :print  (a Eqv b)  '输出为 0
a = 1 : b = 1 :print  (a Eqv b)  '输出为 1
  • 逻辑蕴含(Imp)
a = 0 : b = 0 :print  (a Imp b)  '输出为 1
a = 1 : b = 0 :print  (a Imp b)  '输出为 0
a = 0 : b = 1 :print  (a Imp b)  '输出为 1
a = 1 : b = 1 :print  (a Imp b)  '输出为 1
  • 逻辑异或(Xor)
a = 0 : b = 0 :print  (a Xor b)  '输出为 0
a = 1 : b = 0 :print  (a Xor b)  '输出为 1
a = 0 : b = 1 :print  (a Xor b)  '输出为 1
a = 1 : b = 1 :print  (a Xor b)  '输出为 0

4. 位运算符

位运算符用于对整数类型的二进制位进行操作,包括按位与(And)、按位或(Or)、按位异或(Xor)、按位取反(Not)、左移(Shl)和右移(Shr)。

  • 按位与(And):对两个操作数的每一位执行逻辑与操作,如果两个对应位都是1,则结果位为1,否则为0。
  • 按位或(Or):对两个操作数的每一位执行逻辑或操作,如果两个对应位至少有一个是1,则结果位为1,否则为0。
  • 按位异或(Xor):对两个操作数的每一位执行逻辑异或操作,如果两个对应位不同,则结果位为1,如果相同,则结果位为0。
  • 按位取反(Not):对操作数的每一位执行逻辑取反操作,将1变为0,将0变为1。
  • 左移(Shl):将操作数的二进制位向左移动指定的位数,左边抛弃,右边补0。
  • 右移(Shr):将操作数的二进制位向右移动指定的位数,具体是算数右移还是逻辑右移取决于编译器,算数右移左边用原来的符号位填充,逻辑右移左边用0填充。

5. 赋值运算符

赋值运算符用于将右侧操作数的值赋给左侧的变量,包括简单赋值(=)和复合赋值运算符(如+=、-=、*=、/=等)。

  • 简单赋值(=):将右侧操作数的值赋给左侧的变量。
  • 复合赋值:在赋值的同时进行算术或位运算,如a+=b等价于a=a+b。

6. 条件运算符(三目运算符)

条件运算符是唯一的三元运算符,格式为

  aa = iif(条件表达式, 表达式1 , 表达式2)
  • 如果条件表达式的值为真(非零),则整个条件表达式的值为表达式1的值;如果为假(零),则值为表达式2的值。

7. 其他运算符

除了上述运算符外,还有指针运算符(@和*)、求字节数运算符(sizeof)、强制类型转换运算符((类型))等,它们在特定场景下用于执行特定的操作。

运算符的优先级

不同运算符在表达式中的优先级不同,通常按照算术运算符、关系运算符、逻辑运算符的顺序从高到低排列。在复杂的表达式中,可以使用括号()来改变运算符的默认优先级。

操作者 描述 关联性
CAST 类型转换 N/A
PROCPTR 程序指针 N/A
STRPTR 字符串指针 N/A
VARPTR 变量指针 N/A
     
[] 字符串索引 Left-to-Right
[] 指针索引 Left-to-Right
() 数组索引 Left-to-Right
() 函数调用 Left-to-Right
. 成员访问 Left-to-Right
-> 指向成员访问 Left-to-Right
     
@ 的地址 Right-to-Left
* 取数据值 Right-to-Left
New 赋值内存 Right-to-Left
Delete 取消赋值内存 Right-to-Left
     
^ 取幂 Left-to-Right
     
- 求反 Right-to-Left
     
* Left-to-Right
/ 除以 Left-to-Right
     
\ 整数除法 Left-to-Right
     
MOD 余数 Left-to-Right
     
SHL 位左移 Left-to-Right
SHR 位右移 Left-to-Right
     
+ Left-to-Right
- 减去 Left-to-Right
     
& 字符串连接 Left-to-Right
     
Is 运行时类型信息检查 N/A
     
= 等于 Left-to-Right
<> 不平等 Left-to-Right
< 少于 Left-to-Right
<= 小于或等于 Left-to-Right
>= 大于或等于 Left-to-Right
> 大于 Left-to-Right
     
NOT 求位反码 Right-to-Left
     
AND 位逻辑与 Left-to-Right
     
OR 位逻辑或 Left-to-Right
     
EQV 等价 Left-to-Right
IMP 意义 Left-to-Right
XOR 位异或 Left-to-Right
     
ANDALSO 短路逻辑与 Left-to-Right
ORELSE 短路逻辑或 Left-to-Right
     
= 赋值 N/A
&= 连接和赋值 N/A
+= 添加和赋值 N/A
-= 减去和赋值 N/A
*= 乘法和赋值 N/A
/= 除以和赋值 N/A
\= 整数分割和赋值 N/A
^= 指数和赋值 N/A
MOD= 模数和赋值 N/A
AND= 连接和赋值 N/A
EQV= 等同和赋值 N/A
IMP= 含义和赋值 N/A
OR= 位或和赋值 N/A
XOR= 位异或和赋值 N/A
SHL= 向左移动并赋值 N/A
SHR= 向右移动并赋值 N/A
LET 赋值 N/A
     
LET() 赋值 N/A

注意事项

  • 在使用运算符时,需要注意操作数的类型和范围,以避免数据溢出或类型不匹配的问题。
  • 逻辑运算符和关系运算符的结果为布尔值,但在FB语言中通常用整数0表示假,非0值表示真。
  • 在编写代码时,应注意运算符的优先级

评论一下?

OωO
取消