Why are constant expressions in GCC header files surrounded by parentheses, like this?

```
#define INTMAX_MIN (-9223372036854775807LL)
#define INTMAX_MAX (9223372036854775807LL)

```

What would be the difference if I omit parentheses, this way?

```
#define INTMAX_MIN -9223372036854775807LL
#define INTMAX_MAX 9223372036854775807LL

```

And why is there the 'L' suffix? Would it be the very same if I write the following?

```
#define INTMAX_MIN -9223372036854775807
#define INTMAX_MAX 9223372036854775807

```

Is there an actual usefulness or is it always the same thing?

I'm aware that the 'L' stands for long and I'm also well aware of the importance of parentheses in C macros; I'm asking this for the sake of curiosity.