mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
[DOCS] Semantics of negation.
This commit is contained in:
parent
f81c6e6d16
commit
7d1c428838
@ -82,10 +82,23 @@ Addition, Subtraction and Multiplication
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Addition, subtraction and multiplication have the usual semantics.
|
Addition, subtraction and multiplication have the usual semantics.
|
||||||
They wrap in two's complement notation, meaning that
|
They wrap in two's complement representation, meaning that
|
||||||
for example ``uint256(0) - uint256(1) == 2**256 - 1``. You have to take these overflows
|
for example ``uint256(0) - uint256(1) == 2**256 - 1``. You have to take these overflows
|
||||||
into account when designing safe smart contracts.
|
into account when designing safe smart contracts.
|
||||||
|
|
||||||
|
The expression ``-x`` is equivalent to ``(T(0) - x)`` where
|
||||||
|
``T`` is the type of ``x``. This means that ``-x`` will not be negative
|
||||||
|
if the type of ``x`` is an unsigned integer type. Also, ``-x`` can be
|
||||||
|
positive if ``x`` is negative. There is another caveat also resulting
|
||||||
|
from two's complement representation::
|
||||||
|
|
||||||
|
int x = -2**255;
|
||||||
|
assert(-x == x);
|
||||||
|
|
||||||
|
This means that even if a number is negative, you cannot assume that
|
||||||
|
its negation will be positive.
|
||||||
|
|
||||||
|
|
||||||
Division
|
Division
|
||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user