What do I overlook in the expression below? Does not Int64 type has larger range than Int16?

```
Int64 value = (Int64)(System.Data.SqlTypes.SqlInt16.MaxValue+1);

```

System.Data.SqlTypes.SqlInt16.MaxValue is 32767.
Int64.MaxValue() is 9223372036854775807.

32767 + 1 = 32768. And that is much(!) lower than 9223372036854775807.

So why do I get Aritmethic Overflow when I cast 

```
(Int64)(System.Data.SqlTypes.SqlInt16.MaxValue+1);

```

to Int64?

(Is it something to do with the implementation of + operator in C# or...?)