运算符
算术运算符
| 运算符 |
描述 |
示例 |
结果 |
+ |
加 |
3 + 4 |
7 |
- |
减 |
10 - 4 |
6 |
* |
乘 |
5 * 6 |
30 |
/ |
除 |
10 / 3 |
3 (整数) / 3.333 (浮点) |
% |
取模 |
10 % 3 |
1 |
整数与浮点
// 整数运算(结果为 int)
let a = 10 / 3; // 3
let b = 10 % 3; // 1
// 浮点运算(结果为 float)
let c = 10.0 / 3.0; // 3.3333...
let d = 10.0 % 3.0; // 1.0
// 混合(结果为 float)
let e = 10 / 3.0; // 3.3333...
let f = 5 + 2.5; // 7.5
除零
let x = 10 / 0; // Error: Division by zero
let y = 10.0 / 0.0; // Error: Division by zero
比较运算符
| 运算符 |
描述 |
示例 |
结果 |
== |
等于 |
3 == 3 |
true |
!= |
不等 |
3 != 4 |
true |
< |
小于 |
3 < 4 |
true |
> |
大于 |
3 > 4 |
false |
<= |
小于等于 |
3 <= 3 |
true |
>= |
大于等于 |
3 >= 4 |
false |
let x = 5;
let y = 10;
println(x == y); // false
println(x != y); // true
println(x < y); // true
println(x > y); // false
println(x <= 5); // true
println(x >= 6); // false
跨类型比较
println(5 == 5.0); // true (自动转换比较)
println(3 < 3.5); // true
println(2.5 > 2); // true
逻辑运算符
| 运算符 |
描述 |
示例 |
结果 |
&& |
与(短路) |
true && false |
false |
\|\| |
或(短路) |
true \|\| false |
true |
! |
非 |
!true |
false |
let age = 20;
let has_id = true;
let can_drink = age >= 18 && has_id; // true
let is_minor = age < 18; // false
let can_enter = can_drink || is_minor; // true (短路)
短路求值
// && 第二个操作数仅在第一个为 true 时求值
let x = false && (1/0 == 0); // false,不报错(短路)
// || 第二个操作数仅在第一个为 false 时求值
let y = true || (1/0 == 0); // true,不报错(短路)
一元运算符
| 运算符 |
描述 |
示例 |
结果 |
- |
负号 |
-5 |
-5 |
! |
逻辑非 |
!true |
false |
let x = 5;
let neg = -x; // -5
let not_true = !true; // false
赋值
用 = 赋值。let 声明新变量,普通 = 重新赋值已有变量:
let x = 10; // 声明
x = 20; // 重新赋值
println(x); // 20
v0.1 限制
v0.1 暂不支持复合赋值运算符 += / -= / *= / /=。请用 x = x + 1 形式。
let count = 0;
count = count + 1; // 等价于 count += 1
count = count * 2; // 等价于 count *= 2
运算符优先级
从高到低:
| 优先级 |
运算符 |
说明 |
| 1 |
() [] |
括号、索引 |
| 2 |
- ! (一元) |
负号、逻辑非 |
| 3 |
* / % |
乘除模 |
| 4 |
+ - |
加减 |
| 5 |
< > <= >= |
比较 |
| 6 |
== != |
相等 |
| 7 |
&& |
逻辑与 |
| 8 |
\|\| |
逻辑或 |
括号改变优先级
let a = 2 + 3 * 4; // 14 (先乘后加)
let b = (2 + 3) * 4; // 20 (括号优先)
let c = 10 - 2 - 3; // 5 (左结合)
let d = !true || false; // false (先 ! 后 ||)
let e = !(true || false); // false (括号优先)
真值判断
以下值在布尔上下文中为"假",其他为"真":
| 值 |
真值 |
false |
假 |
none |
假 |
"" (空字符串) |
假 |
[] (空列表) |
假 |
0 / 0.0 |
真(注意:数字零不为假) |
| 其他 |
真 |
if "" { println("不会执行"); }
if [] { println("不会执行"); }
if none { println("不会执行"); }
if 0 { println("会执行"); } // 数字零为真
if "hello" { println("会执行"); }
下一步