I assume that an internal casting happens when we write: arr[i] (which is equivalent to *(arr+i)). Because i can for example be a short, int or long or the unsigned variant of any of these three.
So my question is simple: which type should i be so that no internal conversion takes place? So that the code can run most efficiently?
Crude guess: size_t?