Integers
An integer type is a range constrained field type. The Noir frontend currently supports unsigned, arbitrary-sized integer types.
Note: When an integer is defined in Noir without a specific type, it will default to
Field
. The one exception is for loop indices which default tou64
since comparisons onField
s are not possible.
An integer type is specified first with the letter u
, indicating its unsigned nature, followed by
its length in bits (e.g. 32
). For example, a u32
variable can store a value in the range of
.
Note: The default proving backend supports both even (e.g.
u16
,u48
) and odd (e.g.u5
,u3
) sized integer types.
Taking a look of how the type is used:
fn main(x : Field, y : u32) {
let z = x as u32 + y;
}
x
, y
and z
are all private values in this example. However, x
is a field while y
and z
are unsigned 32-bit integers. If y
or z
exceeds the range , proofs created
will be rejected by the verifier.