:github_url: hide .. Generated automatically by doc/tools/make_rst.py in Godot's source tree. .. DO NOT EDIT THIS FILE, but the int.xml source instead. .. The source is found in doc/classes or modules//doc_classes. .. _class_int: int === Integer built-in type. Description ----------- Signed 64-bit integer type. It can take values in the interval ``[-2^63, 2^63 - 1]``, i.e. ``[-9223372036854775808, 9223372036854775807]``. Exceeding those bounds will wrap around. \ ``int`` is a :ref:`Variant` type, and will thus be used when assigning an integer value to a :ref:`Variant`. It can also be enforced with the ``: int`` type hint. .. tabs:: .. code-tab:: gdscript 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. var max_int = 9223372036854775807 print(max_int) # 9223372036854775807, OK. max_int += 1 print(max_int) # -9223372036854775808, we overflowed and wrapped around. .. code-tab:: 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. Constructors ------------ +-----------------------+----------------------------------------------------------------------------------+ | :ref:`int` | :ref:`int` **(** **)** | +-----------------------+----------------------------------------------------------------------------------+ | :ref:`int` | :ref:`int` **(** :ref:`int` from **)** | +-----------------------+----------------------------------------------------------------------------------+ | :ref:`int` | :ref:`int` **(** :ref:`bool` from **)** | +-----------------------+----------------------------------------------------------------------------------+ | :ref:`int` | :ref:`int` **(** :ref:`float` from **)** | +-----------------------+----------------------------------------------------------------------------------+ Operators --------- +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator !=` **(** **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator !=` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator !=` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator %` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator &` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`Color` | :ref:`operator *` **(** :ref:`Color` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`Quaternion` | :ref:`operator *` **(** :ref:`Quaternion` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`operator *` **(** :ref:`Vector2` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`operator *` **(** :ref:`Vector2i` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`Vector3` | :ref:`operator *` **(** :ref:`Vector3` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`Vector3i` | :ref:`operator *` **(** :ref:`Vector3i` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`operator *` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator *` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`operator +` **(** :ref:`String` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`operator +` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator +` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`operator -` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator -` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`operator /` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator /` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator <` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator <` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator <<` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator <=` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator <=` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator ==` **(** **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator ==` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator ==` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator >` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator >` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator >=` **(** :ref:`float` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator >=` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator >>` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator ^` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator unary+` **(** **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator unary-` **(** **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator |` **(** :ref:`int` right **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`operator ~` **(** **)** | +-------------------------------------+------------------------------------------------------------------------------------------------------------+ Constructor Descriptions ------------------------ .. _class_int_constructor_int: - :ref:`int` **int** **(** **)** Constructs a default-initialized ``int`` set to ``0``. ---- - :ref:`int` **int** **(** :ref:`int` from **)** Constructs an ``int`` as a copy of the given ``int``. ---- - :ref:`int` **int** **(** :ref:`bool` from **)** Cast a :ref:`bool` value to an integer value, ``int(true)`` will be equals to 1 and ``int(false)`` will be equals to 0. ---- - :ref:`int` **int** **(** :ref:`float` from **)** Cast a float value to an integer value, this method simply removes the number fractions (i.e. rounds ``from`` towards zero), so for example ``int(2.7)`` will be equals to 2, ``int(0.1)`` will be equals to 0 and ``int(-2.7)`` will be equals to -2. This operation is also called truncation. Operator Descriptions --------------------- .. _class_int_operator_neq_bool: - :ref:`bool` **operator !=** **(** **)** ---- - :ref:`bool` **operator !=** **(** :ref:`float` right **)** Returns ``true`` if operands are different from each other. ---- - :ref:`bool` **operator !=** **(** :ref:`int` right **)** Returns ``true`` if operands are different from each other. ---- .. _class_int_operator_mod_int: - :ref:`int` **operator %** **(** :ref:`int` right **)** 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 :ref:`@GlobalScope.posmod` instead if you want to handle negative numbers. :: print(5 % 2) # 1 print(12 % 4) # 0 print(-5 % 3) # -2 ---- .. _class_int_operator_bwand_int: - :ref:`int` **operator &** **(** :ref:`int` right **)** Returns the result of bitwise ``AND`` operation for two integers. :: print(3 & 1) # 1 print(11 & 3) # 3 It's useful to retrieve binary flags from a variable. :: var flags = 5 # Do something if the first bit is enabled. if flags & 1: do_stuff() ---- .. _class_int_operator_mul_Color: - :ref:`Color` **operator *** **(** :ref:`Color` right **)** Multiplies each component of the :ref:`Color` by the given ``int``. ---- - :ref:`Quaternion` **operator *** **(** :ref:`Quaternion` right **)** Multiplies each component of the :ref:`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. ---- - :ref:`Vector2` **operator *** **(** :ref:`Vector2` right **)** Multiplies each component of the :ref:`Vector2` by the given ``int``. :: print(2 * Vector2(1, 1)) # Vector2(2, 2) ---- - :ref:`Vector2i` **operator *** **(** :ref:`Vector2i` right **)** Multiplies each component of the :ref:`Vector2i` by the given ``int``. ---- - :ref:`Vector3` **operator *** **(** :ref:`Vector3` right **)** Multiplies each component of the :ref:`Vector3` by the given ``int``. ---- - :ref:`Vector3i` **operator *** **(** :ref:`Vector3i` right **)** Multiplies each component of the :ref:`Vector3i` by the given ``int``. ---- - :ref:`float` **operator *** **(** :ref:`float` right **)** Multiplies an ``int`` and a :ref:`float`. The result is a :ref:`float`. ---- - :ref:`int` **operator *** **(** :ref:`int` right **)** Multiplies two ``int``\ s. ---- .. _class_int_operator_sum_String: - :ref:`String` **operator +** **(** :ref:`String` right **)** Adds Unicode character with code ``int`` to the :ref:`String`. ---- - :ref:`float` **operator +** **(** :ref:`float` right **)** Adds an ``int`` and a :ref:`float`. The result is a :ref:`float`. ---- - :ref:`int` **operator +** **(** :ref:`int` right **)** Adds two integers. ---- .. _class_int_operator_dif_float: - :ref:`float` **operator -** **(** :ref:`float` right **)** Subtracts a :ref:`float` from an ``int``. The result is a :ref:`float`. ---- - :ref:`int` **operator -** **(** :ref:`int` right **)** Subtracts two integers. ---- .. _class_int_operator_div_float: - :ref:`float` **operator /** **(** :ref:`float` right **)** Divides an ``int`` by a :ref:`float`. The result is a :ref:`float`. :: print(10 / 3.0) # 3.333... ---- - :ref:`int` **operator /** **(** :ref:`int` right **)** Divides two integers. The decimal part of the result is discarded (truncated). :: print(10 / 2) # 5 print(10 / 3) # 3 ---- .. _class_int_operator_lt_bool: - :ref:`bool` **operator <** **(** :ref:`float` right **)** Returns ``true`` if this ``int`` is less than the given :ref:`float`. ---- - :ref:`bool` **operator <** **(** :ref:`int` right **)** Returns ``true`` the left integer is less than the right one. ---- .. _class_int_operator_bwsl_int: - :ref:`int` **operator <<** **(** :ref:`int` right **)** Performs bitwise shift left operation on the integer. Effectively the same as multiplying by a power of 2. :: print(10 << 1) # 20 print(10 << 4) # 160 ---- .. _class_int_operator_lte_bool: - :ref:`bool` **operator <=** **(** :ref:`float` right **)** Returns ``true`` if this ``int`` is less than or equal to the given :ref:`float`. ---- - :ref:`bool` **operator <=** **(** :ref:`int` right **)** Returns ``true`` the left integer is less than or equal to the right one. ---- .. _class_int_operator_eq_bool: - :ref:`bool` **operator ==** **(** **)** ---- - :ref:`bool` **operator ==** **(** :ref:`float` right **)** Returns ``true`` if the integer is equal to the given :ref:`float`. ---- - :ref:`bool` **operator ==** **(** :ref:`int` right **)** Returns ``true`` if both integers are equal. ---- .. _class_int_operator_gt_bool: - :ref:`bool` **operator >** **(** :ref:`float` right **)** Returns ``true`` if this ``int`` is greater than the given :ref:`float`. ---- - :ref:`bool` **operator >** **(** :ref:`int` right **)** Returns ``true`` the left integer is greater than the right one. ---- .. _class_int_operator_gte_bool: - :ref:`bool` **operator >=** **(** :ref:`float` right **)** Returns ``true`` if this ``int`` is greater than or equal to the given :ref:`float`. ---- - :ref:`bool` **operator >=** **(** :ref:`int` right **)** Returns ``true`` the left integer is greater than or equal to the right one. ---- .. _class_int_operator_bwsr_int: - :ref:`int` **operator >>** **(** :ref:`int` right **)** Performs bitwise shift right operation on the integer. Effectively the same as dividing by a power of 2. :: print(10 >> 1) # 5 print(10 >> 2) # 2 ---- .. _class_int_operator_bwxor_int: - :ref:`int` **operator ^** **(** :ref:`int` right **)** Returns the result of bitwise ``XOR`` operation for two integers. :: print(5 ^ 1) # 4 print(4 ^ 7) # 3 ---- .. _class_int_operator_unplus_int: - :ref:`int` **operator unary+** **(** **)** Returns the same value as if the ``+`` was not there. Unary ``+`` does nothing, but sometimes it can make your code more readable. ---- .. _class_int_operator_unminus_int: - :ref:`int` **operator unary-** **(** **)** Returns the negated value of the ``int``. If positive, turns the number negative. If negative, turns the number positive. If zero, does nothing. ---- .. _class_int_operator_bwor_int: - :ref:`int` **operator |** **(** :ref:`int` right **)** Returns the result of bitwise ``OR`` operation for two integers. :: print(2 | 4) # 6 print(1 | 3) # 3 It's useful to store binary flags in a variable. :: var flags = 0 # Turn first and third bit on. flags |= 1 flags |= 4 ---- .. _class_int_operator_bwnot_int: - :ref:`int` **operator ~** **(** **)** Returns the result of bitwise ``NOT`` operation for the integer. It's effectively equal to ``-int + 1``. :: print(~4) # -3 print(~7) # -6 .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`