2017-09-12 22:42:36 +02:00
<?xml version="1.0" encoding="UTF-8" ?>
2020-02-01 02:03:48 +01:00
<class name= "int" version= "4.0" >
2017-09-12 22:42:36 +02:00
<brief_description >
Integer built-in type.
</brief_description>
<description >
2019-02-21 11:21:41 +01:00
Signed 64-bit integer type.
It can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds will wrap around.
2019-03-29 23:37:35 +01:00
[int] is a [Variant] type, and will thus be used when assigning an integer value to a [Variant]. It can also be enforced with the [code]: int[/code] type hint.
2020-10-31 00:37:55 +01:00
[codeblocks]
[gdscript]
2020-01-23 18:41:49 +01:00
var my_variant = 0 # int, value 0.
my_variant += 4.2 # float, value 4.2.
var my_int: int = 1 # int, value 1.
my_int = 4.2 # int, value 4, the right value is implicitly cast to int.
my_int = int("6.7") # int, value 6, the String is explicitly cast with int.
2019-02-21 11:21:41 +01:00
var max_int = 9223372036854775807
2020-01-23 18:41:49 +01:00
print(max_int) # 9223372036854775807, OK.
2019-02-21 11:21:41 +01:00
max_int += 1
2020-01-23 18:41:49 +01:00
print(max_int) # -9223372036854775808, we overflowed and wrapped around.
2020-10-31 00:37:55 +01:00
[/gdscript]
[csharp]
int myInt = (int)"6.7".ToFloat(); // int, value 6, the String is explicitly cast with int.
// We have to use `long` here, because GDSript's `int`
// is 64 bits long while C#'s `int` is only 32 bits.
long maxInt = 9223372036854775807;
GD.Print(maxInt); // 9223372036854775807, OK.
maxInt++;
GD.Print(maxInt); // -9223372036854775808, we overflowed and wrapped around.
// Alternatively, if we used C#'s 32-bit `int` type, the maximum value is much smaller:
int halfInt = 2147483647;
GD.Print(halfInt); // 2147483647, OK.
halfInt++;
GD.Print(halfInt); // -2147483648, we overflowed and wrapped around.
[/csharp]
[/codeblocks]
2017-09-12 22:42:36 +02:00
</description>
<tutorials >
</tutorials>
2021-09-21 04:49:02 +02:00
<constructors >
<constructor name= "int" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
2020-11-09 17:46:03 +01:00
<description >
Constructs a default-initialized [int] set to [code]0[/code].
</description>
2021-09-21 04:49:02 +02:00
</constructor>
<constructor name= "int" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "from" type= "int" />
2017-09-12 22:42:36 +02:00
<description >
2020-11-09 17:46:03 +01:00
Constructs an [int] as a copy of the given [int].
2017-09-12 22:42:36 +02:00
</description>
2021-09-21 04:49:02 +02:00
</constructor>
<constructor name= "int" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "from" type= "bool" />
2017-09-12 22:42:36 +02:00
<description >
2020-11-09 17:46:03 +01:00
Cast a [bool] value to an integer value, [code]int(true)[/code] will be equals to 1 and [code]int(false)[/code] will be equals to 0.
2017-09-12 22:42:36 +02:00
</description>
2021-09-21 04:49:02 +02:00
</constructor>
<constructor name= "int" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "from" type= "float" />
2017-09-12 22:42:36 +02:00
<description >
2020-11-29 15:08:45 +01:00
Cast a float value to an integer value, this method simply removes the number fractions (i.e. rounds [code]from[/code] towards zero), so for example [code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] will be equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This operation is also called truncation.
2017-09-12 22:42:36 +02:00
</description>
2021-09-21 04:49:02 +02:00
</constructor>
</constructors>
<operators >
<operator name= "operator !=" >
2021-09-17 17:22:48 +02:00
<return type= "bool" />
<description >
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator !=" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] if operands are different from each other.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator !=" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] if operands are different from each other.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator %" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-11-04 16:58:20 +01:00
Returns the remainder after dividing two integers. This operation uses truncated division, which is often not desired as it does not work well with negative numbers. Consider using [method @GlobalScope.posmod] instead if you want to handle negative numbers.
2021-01-06 01:13:11 +01:00
[codeblock]
print(5 % 2) # 1
print(12 % 4) # 0
2021-11-04 16:58:20 +01:00
print(-5 % 3) # -2
2021-01-06 01:13:11 +01:00
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator &" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns the result of bitwise [code]AND[/code] operation for two integers.
[codeblock]
print(3 & 1) # 1
print(11 & 3) # 3
[/codeblock]
It's useful to retrieve binary flags from a variable.
[codeblock]
var flags = 5
# Do something if the first bit is enabled.
if flags & 1:
do_stuff()
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator *" >
<return type= "Color" />
<argument index= "0" name= "right" type= "Color" />
<description >
2021-11-04 16:58:20 +01:00
Multiplies each component of the [Color] by the given [int].
2021-09-21 04:49:02 +02:00
</description>
</operator>
<operator name= "operator *" >
<return type= "Quaternion" />
<argument index= "0" name= "right" type= "Quaternion" />
<description >
2021-11-04 16:58:20 +01:00
Multiplies each component of the [Quaternion] by the given [int]. This operation is not meaningful on its own, but it can be used as a part of a larger expression.
2021-09-21 04:49:02 +02:00
</description>
</operator>
<operator name= "operator *" >
2021-07-30 15:28:05 +02:00
<return type= "Vector2" />
<argument index= "0" name= "right" type= "Vector2" />
2020-11-10 14:16:20 +01:00
<description >
2021-09-21 04:49:02 +02:00
Multiplies each component of the [Vector2] by the given [int].
2021-01-06 01:13:11 +01:00
[codeblock]
print(2 * Vector2(1, 1)) # Vector2(2, 2)
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator *" >
2021-07-30 15:28:05 +02:00
<return type= "Vector2i" />
<argument index= "0" name= "right" type= "Vector2i" />
2020-11-10 14:16:20 +01:00
<description >
2021-09-21 04:49:02 +02:00
Multiplies each component of the [Vector2i] by the given [int].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator *" >
2021-07-30 15:28:05 +02:00
<return type= "Vector3" />
<argument index= "0" name= "right" type= "Vector3" />
2020-11-10 14:16:20 +01:00
<description >
2021-09-21 04:49:02 +02:00
Multiplies each component of the [Vector3] by the given [int].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator *" >
2021-07-30 15:28:05 +02:00
<return type= "Vector3i" />
<argument index= "0" name= "right" type= "Vector3i" />
2020-11-10 14:16:20 +01:00
<description >
2021-09-21 04:49:02 +02:00
Multiplies each component of the [Vector3i] by the given [int].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
2021-11-28 09:48:57 +01:00
<operator name= "operator *" >
<return type= "float" />
<argument index= "0" name= "right" type= "float" />
<description >
Multiplies an [int] and a [float]. The result is a [float].
</description>
</operator>
<operator name= "operator *" >
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
<description >
Multiplies two [int]s.
</description>
</operator>
2021-09-21 04:49:02 +02:00
<operator name= "operator +" >
<return type= "float" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-09-21 04:49:02 +02:00
Adds an [int] and a [float]. The result is a [float].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator +" >
2021-09-17 17:22:48 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-09-17 17:22:48 +02:00
Adds two integers.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator -" >
2021-07-30 15:28:05 +02:00
<return type= "float" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Subtracts a [float] from an [int]. The result is a [float].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator -" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Subtracts two integers.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator /" >
2021-07-30 15:28:05 +02:00
<return type= "float" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Divides an [int] by a [float]. The result is a [float].
[codeblock]
print(10 / 3.0) # 3.333...
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator /" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Divides two integers. The decimal part of the result is discarded (truncated).
[codeblock]
print(10 / 2) # 5
print(10 / 3) # 3
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator <" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] if this [int] is less than the given [float].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator <" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] the left integer is less than the right one.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator <<" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Performs bitwise shift left operation on the integer. Effectively the same as multiplying by a power of 2.
[codeblock]
print(10 < < 1) # 20
print(10 < < 4) # 160
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator <=" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] if this [int] is less than or equal to the given [float].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator <=" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] the left integer is less than or equal to the right one.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator ==" >
2021-09-17 17:22:48 +02:00
<return type= "bool" />
<description >
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator ==" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] if the integer is equal to the given [float].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator ==" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] if both integers are equal.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator >" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] if this [int] is greater than the given [float].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator >" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] the left integer is greater than the right one.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator >=" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "float" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] if this [int] is greater than or equal to the given [float].
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator >=" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns [code]true[/code] the left integer is greater than or equal to the right one.
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator >>" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Performs bitwise shift right operation on the integer. Effectively the same as dividing by a power of 2.
[codeblock]
print(10 > > 1) # 5
print(10 > > 2) # 2
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator ^" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns the result of bitwise [code]XOR[/code] operation for two integers.
[codeblock]
print(5 ^ 1) # 4
print(4 ^ 7) # 3
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator unary+" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
2021-06-19 17:58:49 +02:00
<description >
2021-08-18 20:04:10 +02:00
Returns the same value as if the [code]+[/code] was not there. Unary [code]+[/code] does nothing, but sometimes it can make your code more readable.
2021-06-19 17:58:49 +02:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator unary-" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
2021-06-19 17:58:49 +02:00
<description >
2021-08-18 20:04:10 +02:00
Returns the negated value of the [int]. If positive, turns the number negative. If negative, turns the number positive. If zero, does nothing.
2021-06-19 17:58:49 +02:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator |" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
<argument index= "0" name= "right" type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns the result of bitwise [code]OR[/code] operation for two integers.
[codeblock]
print(2 | 4) # 6
print(1 | 3) # 3
[/codeblock]
It's useful to store binary flags in a variable.
[codeblock]
var flags = 0
# Turn first and third bit on.
flags |= 1
flags |= 4
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
<operator name= "operator ~" >
2021-07-30 15:28:05 +02:00
<return type= "int" />
2020-11-10 14:16:20 +01:00
<description >
2021-01-06 01:13:11 +01:00
Returns the result of bitwise [code]NOT[/code] operation for the integer. It's effectively equal to [code]-int + 1[/code].
[codeblock]
print(~4) # -3
print(~7) # -6
[/codeblock]
2020-11-10 14:16:20 +01:00
</description>
2021-09-21 04:49:02 +02:00
</operator>
</operators>
2017-09-12 22:42:36 +02:00
</class>