两个程序中位置二为何输出的数值不相同?

程序1
#include <stdio.h>

double pi=3.141592; // 全局变量声明

void func1(); // 声明一个自定义函数

int main()
{
printf("位置一 pi=%f\n",pi);
func1();
printf("位置二 pi=%f\n",pi);
}

void func1()
{
printf("位置三 pi=%f\n",pi);
pi=3.141593; // 改变pi的值
printf("位置四 pi=%f\n",pi);
}
程序2/*

#include <stdio.h>

double pi=3.141592; // 全局变量声明

void func1(); // 声明一个自定义函数

int main()
{
printf("位置一 pi=%f\n",pi);
func1();
printf("位置二 pi=%f\n",pi);
}

void func1()
{
double pi=3.141593; // 全局变量声明
printf("位置三 pi=%f\n",pi);
}

第二个fun1中的pi是局部变量,没有修改全局变量。