問題を箇条書きにしますと、
1. arrays[n]の位置の決定
2. 関数funcの評価
3. 決定した配列の位置への値の代入

がどういう順番になるかで実行結果がどうなるかが違ってくると思います

arrays[n]の位置が関数の呼び出し前に決定されると誤った位置に値が代入されるか又はアクセス違反になるかも?
arrays[n]の位置の決定が関数の呼び出しの後だとしても、最適化の問題等により[]演算子の評価の後にnが更新されるかも?
fun()を呼び出した際に確実にnが変更されて、その後に配列にアクセスしないとアクセス違反であぼーんしそう
式の評価順がどうとか、副作用完了点がどうとか、調べても分かりません・・・