No, it does not.  In C, variables have a fixed set of memory addresses to work with.  If you are working on a system with 4-byte `ints`, and you set an `int` variable to `2,147,483,647` and then add `1`, the variable will contain `-2147483648`.  No other memory locations will be modified.  

In essence, the compiler will not let you assign a value that is too big for the type.  This will generate a compiler error.  If you force it to with a case, the value will be truncated.

Looked at in a bitwise way, if the type can only store 8 bits, and you try to force the value `1010101010101` into it with a case, you will end up with the bottom 8 bits, or `01010101`.


In your example, regardless of what you do to `myArray[2]`, `myArray[3]` will contain '4'.  There is no "spill over".  You are trying to put something that is more than 4-bytes it will just lop off everything on the high end, leaving the bottom 4 bytes.  On most systems, this will result in `-2147483648`.

From a practical standpoint, you want to just make sure this never, ever happens.  These sorts of overflows often result in hard-to-solve defects.  In other words, if you think there is any chance at all your values will be in the billions, don't use `int`.