It would probably be better to set them to size -1 so that when the loop increments the final time before the check, that you don't overflow (in the event you are using _MAX or something). It's not really something I see myself using anyway, but you could.
Honestly, I can't see your compiler ever doing what you are suggesting. There is nothing wrong with setting the value of a loop control variable to something different inside the loop. I have never heard of that being an issue - and it shouldn't. I can't possibly imagine a scenario where that (you setting a loop control value specifically) caused your compiler to break your loop.