为什么前一个程序结果是3(不是想要的),后一个结果是60(正确的答案)

#include
#include
using namespace std;
int main()
{
int a=1,b=1,c=1,n=0;
for(; a<=5; a++)
{
for(; b<=5; b++)
{
if(a!=b)
{
for(; c<=5; c++)
{
if(c!=a&&c!=b)
{
n=n+1;
}
}
}
}
}
cout<
return 0;
}

#include
#include
using namespace std;
int main()
{
int a,b,c,n=0;
for(a=1; a<=5; a++)
{
for(b=1; b<=5; b++)
{
if(a!=b)
{
for(c=1; c<=5; c++)
{
if(c!=a&&c!=b)
{
n=n+1;
}
}
}
}
}
cout<
return 0;
}

for循环嵌套,第二、三层的for要执行多次的,前一个程序的b、c只在程序开始的地方初始化了一次,后面再次执行第二、三层的for时,b、c继承了前一轮循环的值,没有重新初始化导致 b<=5 和 c<=5 不满足。
所以应该在每次执行for的时候把对应变量重新初始化。