分析一下代码,考虑出错原因
double fun(int i)
{
volatile double d[1] = {3.14};
volatile long int a[2];
a[i] = 1073741824;
return d[0];
}
对于上述C语言函数,i=0~4时,fun(i)分别返回什么值?
fun(0) : 3.14
fun(1) : 3.14
fun(2) : 3.1399998664856
fun(3) : 2.00000061035156
fun(4) : 3.14, 然后存储保护出错
Why?