Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
int¶
整数内置类型。
描述¶
带符号 64 位整数类型。这意味着它能够接受从 -2^63
到 2^63 - 1
的值,即从 -9223372036854775808
到 9223372036854775807
。超出这个范围后,值会绕回到另一端。
int 可以在需要时自动转换为 float,例如在作为函数的参数传递的时候。float 会尽可能与原始整数接近。
类似地,float 可以自动转换为 int。这样会截断该 float,丢弃小数点之后的部分。
注意:布尔环境中会将等于 0
的 int 评估为 false
,其他值则为 true
。
var x: int = 1 # x 为 1
x = 4.2 # x 为 4,因为 4.2 发生了截断
var max_int = 9223372036854775807 # int 所能存储的最大值
max_int += 1 # max_int 现在是 -9223372036854775808,因为它绕到了另一端
int x = 1; // x 为 1
x = (int)4.2; // x 为 4,因为 4.2 发生了截断
// 下面使用 long,因为 GDScript 的 int 为 64 位,而 C# 的 int 为 32 位。
long maxLong = 9223372036854775807; // long 所能存储的最大值
maxLong++; // maxLong 现在是 -9223372036854775808,因为它绕到了另一端。
// 也可以使用 C# 的 32 位 int 类型,最大值较小。
int maxInt = 2147483647; // int 所能存储的最大值
maxInt++; // maxInt 现在是 -2147483648,因为它绕到了另一端。
你可以使用 0b
字面量书写二进制值,使用 0x
字面量书写十六进制值,使用 _
符号分隔较长的数字,提升可读性。
var x = 0b1001 # x 为 9
var y = 0xF5 # y 为 245
var z = 10_000_000 # z 为 10000000
int x = 0b1001; // x 为 9
int y = 0xF5; // y 为 245
int z = 10_000_000; // z 为 10000000
构造函数¶
int() |
|
运算符¶
operator !=(right: float) |
|
operator !=(right: int) |
|
operator %(right: int) |
|
operator &(right: int) |
|
operator *(right: Color) |
|
operator *(right: Quaternion) |
|
operator *(right: Vector2) |
|
operator *(right: Vector2i) |
|
operator *(right: Vector3) |
|
operator *(right: Vector3i) |
|
operator *(right: Vector4) |
|
operator *(right: Vector4i) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator **(right: float) |
|
operator **(right: int) |
|
operator +(right: float) |
|
operator +(right: int) |
|
operator -(right: float) |
|
operator -(right: int) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: float) |
|
operator <(right: int) |
|
operator <<(right: int) |
|
operator <=(right: float) |
|
operator <=(right: int) |
|
operator ==(right: float) |
|
operator ==(right: int) |
|
operator >(right: float) |
|
operator >(right: int) |
|
operator >=(right: float) |
|
operator >=(right: int) |
|
operator >>(right: int) |
|
operator ^(right: int) |
|
operator |(right: int) |
|
构造函数说明¶
构造设为 0
的 int。
构造给定 int 的副本 int。
从 String 构造新的 int,遵循与 String.to_int 相同的规则。
从 bool 构造新的 int。true
会转换为 1
,false
会转换为 0
。
运算符说明¶
bool operator !=(right: float) 🔗
如果该 int 与该 float 不等价,则返回 true
。
bool operator !=(right: int) 🔗
如果 int 不相等,则返回 true
。
返回两个 int 相除后的余数。该操作使用截断除法,被除数为负数时会返回负数。如果不希望如此,请考虑使用 @GlobalScope.posmod。
print(6 % 2) # 输出 0
print(11 % 4) # 输出 3
print(-5 % 3) # 输出 -2
执行按位 AND
运算。
print(0b1100 & 0b1010) # 输出 8(二进制 1000)
可用于从变量中检索二进制标志。
var flags = 0b101
# 检查是否启用了第一或第二个比特位。
if flags & 0b011:
do_stuff() # 会执行这一行。
Color operator *(right: Color) 🔗
将 Color 的每个分量乘以该 int。
Quaternion operator *(right: Quaternion) 🔗
将 Quaternion 的每个分量乘以该 int。此操作本身没有意义,但可以用作更大表达式的一部分。
Vector2 operator *(right: Vector2) 🔗
print(2 * Vector2(1, 4)) # 输出 (2, 8)
Vector2i operator *(right: Vector2i) 🔗
将 Vector2i 的每个分量乘以该 int。
Vector3 operator *(right: Vector3) 🔗
将 Vector3 的每个分量乘以该 int。
Vector3i operator *(right: Vector3i) 🔗
将 Vector3i 的每个分量乘以该 int。
Vector4 operator *(right: Vector4) 🔗
将 Vector4 的每个分量乘以该 int。
Vector4i operator *(right: Vector4i) 🔗
将 Vector4i 的每个分量乘以该 int。
float operator *(right: float) 🔗
将两个 int 相乘。
float operator **(right: float) 🔗
print(2 ** 0.5) # 输出 1.4142135623731
将左侧的 int 提升到右侧的 int 次幂。
print(3 ** 4) # 输出 81
float operator +(right: float) 🔗
将两个 int 相加。
float operator -(right: float) 🔗
将两个 int 相减。
float operator /(right: float) 🔗
print(10 / 3.0) # 输出 3.33333333333333
将两个 int 相除。结果为 int。这样会截断该 float,丢弃小数点后的部分。
print(6 / 2) # 输出 3
print(5 / 3) # 输出 1
bool operator <(right: float) 🔗
如果该 int 小于该 float,则返回 true
。
如果左侧的 int 小于右侧的 int,则返回 true
。
执行按位左移操作。效果上与乘以 2 的幂相同。
print(0b1010 << 1) # 输出 20(二进制 10100)
print(0b1010 << 3) # 输出 80(二进制 1010000)
bool operator <=(right: float) 🔗
如果该 int 小于等于该 float,则返回 true
。
bool operator <=(right: int) 🔗
如果左侧的 int 小于等于右侧的 int,则返回 true
。
bool operator ==(right: float) 🔗
如果该 int 等于该 float,则返回 true
。
bool operator ==(right: int) 🔗
如果两个 int 相等,则返回 true
。
bool operator >(right: float) 🔗
如果该 int 大于该 float,则返回 true
。
如果左侧的 int 大于右侧的 int,则返回 true
。
bool operator >=(right: float) 🔗
如果该 int 大于等于该 float,则返回 true
。
bool operator >=(right: int) 🔗
如果左侧的 int 大于等于右侧的 int,则返回 true
。
执行按位右移操作。效果上与除以 2 的幂相同。
print(0b1010 >> 1) # 输出 5(二进制 101)
print(0b1010 >> 2) # 输出 2(二进制 10)
执行按位 XOR
(异或)运算。
print(0b1100 ^ 0b1010) # 输出 6(二进制 110)
返回与 +
不存在时相同的值。单目 +
没有作用,但有时可以使你的代码更具可读性。
返回该 int 的相反值。如果为正数,则该将数变为负数。如果为负数,则将该数变为正数。如果为零,则不执行任何操作。
执行按位 OR
(或)运算。
print(0b1100 | 0b1010) # 输出 14(二进制 1110)
可用于在变量中存储二进制标记。
var flags = 0
flags |= 0b101 # 置第一和第三位。
对该 int 执行按位 NOT
(反)运算。由于补码,效果上与 -(int + 1)
相同。
print(~4) # 输出 -5
print(~(-7)) # 输出 6