mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #427 from chriseth/intlit
Warning about using integer literals in division.
This commit is contained in:
commit
60a21c6487
@ -51,6 +51,9 @@ Operators:
|
|||||||
* Bit operators: `&`, `|`, `^` (bitwise exclusive or), `~` (bitwise negation)
|
* Bit operators: `&`, `|`, `^` (bitwise exclusive or), `~` (bitwise negation)
|
||||||
* Arithmetic operators: `+`, `-`, unary `-`, unary `+`, `*`, `/`, `%` (remainder), `**` (exponentiation)
|
* Arithmetic operators: `+`, `-`, unary `-`, unary `+`, `*`, `/`, `%` (remainder), `**` (exponentiation)
|
||||||
|
|
||||||
|
Division always truncates (it just maps to the DIV opcode of the EVM), but it does not truncate if both
|
||||||
|
operators are :ref:`literals<integer_literals>` (or literal expressions).
|
||||||
|
|
||||||
.. index:: address, balance, send, call, callcode
|
.. index:: address, balance, send, call, callcode
|
||||||
|
|
||||||
Address
|
Address
|
||||||
@ -132,6 +135,8 @@ number of bytes, always use one of `bytes1` to `bytes32` because they are much c
|
|||||||
|
|
||||||
.. index:: literal, literal;integer
|
.. index:: literal, literal;integer
|
||||||
|
|
||||||
|
.. _integer_literals:
|
||||||
|
|
||||||
Integer Literals
|
Integer Literals
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
@ -139,6 +144,10 @@ Integer Literals are arbitrary precision integers until they are used together w
|
|||||||
|
|
||||||
It is even possible to temporarily exceed the maximum of 256 bits as long as only integer literals are used for the computation: `var x = (0xffffffffffffffffffff * 0xffffffffffffffffffff) * 0;` Here, `x` will have the value `0` and thus the type `uint8`.
|
It is even possible to temporarily exceed the maximum of 256 bits as long as only integer literals are used for the computation: `var x = (0xffffffffffffffffffff * 0xffffffffffffffffffff) * 0;` Here, `x` will have the value `0` and thus the type `uint8`.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
Divison on integer literals used to truncate in earlier versions, but it will actually convert into a rational number in the future, i.e. `1/2` is not equal to `0`, but to `0.5`.
|
||||||
|
|
||||||
|
|
||||||
.. index:: literal, literal;string, string
|
.. index:: literal, literal;string, string
|
||||||
|
|
||||||
String Literals
|
String Literals
|
||||||
|
Loading…
Reference in New Issue
Block a user