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`.