Nitpick Integer Type Family
Nitpick provides highly explicit, strictly sized integer
types to ensure absolute determinism across all platforms.
Standard C types like int or long
do not exist.
1. Signed Integers
Standard two’s-complement signed integers. *
int1 (used primarily in bitfields) *
int2, int4, int8,
int16, int32, int64 *
Large Integers: int128,
int256, int512,
int1024, int2048,
int4096 * Note: The massive sizes
(128–4096) are implemented via native LLVM arbitrary
precision integers (Large BigInt Math / LBIM). They inherit
all of Nitpick’s strict division-by-zero and sticky error
propagation safety features and are designed for
high-security cryptography (e.g., lattice-based
cryptography).
Literals: Suffix with the exact type
name (e.g., 42i32, -100i4096).
Usage Example:
int32:user_count = 42i32;
int4096:crypto_key = -1i4096;
2. Unsigned Integers
uint1uint2,uint4,uint8,uint16,uint32,uint64- Large Unsigned:
uint128,uint256,uint512,uint1024,uint2048,uint4096
Literals: Suffix with u
followed by the bit width (e.g., 42u32,
0xFFu64).
Usage Example:
uint64:memory_address = 0xDEADBEEFu64;
3. Strict Determinism
Unlike C/C++, integer overflow in Nitpick is aggressively
tracked. You can use the --verify-overflow
compiler flag to mathematically prove (via the Z3 SMT
solver) that integer arithmetic cannot overflow or underflow
across the defined data ranges.