### felt252

The basic data type in Cairo is `felt252`

, which stands for *field element*. These are integers in the range `0 <= x < P`

, where `P`

is a large prime number, currently equal to `P = 2^{251} + 17 * 2^{192}+1`

.
Field elements have the property of intentionally *wrapping around* when their value falls outside the specified range. That is, they use modular arithmetic.

```
fn main() {
// max value of felt252
let x: felt252 = 3618502788666131213697322783095070105623107215331596699973092056135872020480;
let y: felt252 = 1;
assert(x + y == 0, 'P == 0 (mod P)');
}
```

Since `felt252`

is the default data type, in simple cases like these there is no real need to specify the type.
This means we can simply write:

```
fn main() {
// max value of felt252
let x = 3618502788666131213697322783095070105623107215331596699973092056135872020480;
let y = 1;
assert(x + y == 0, 'P == 0 (mod P)');
}
```

*Try it out!*

- Install the toolchain:
- For macOS and Linux, run our script:

curl -sL https://raw.githubusercontent.com/lambdaclass/cairo-by-example/main/build/installer.sh | bash -s 2.2.0

- For Windows and others, please see the official guide
- Run the example:
- Copy the example into a
**felt252.cairo**file and run with:

%!s(<nil>) felt252.cairo

- Copy the example into a