为什么我在函数里面定义一下变量,结果输出就是0 0了

问题遇到的现象和发生背景

img


我在函数里面定义了一下num1和2;

问题相关代码,请勿粘贴截图

#include<stdio.h>
int num1,num2;
void cn(char s[])
{

int i=0;
int num1=0,num2=0;//为什么人这个地方int去掉就正确了,不去掉就是输出 0  0
while(s[i]!='\0')
i++;
for(;i>=0;i--)
{
if((s[i]>='A')&&(s[i]<='Z'))
   num1++;
if((s[i]>='a')&&(s[i]<='z'))
   num2++;
}

}
int main()
{
char s[101];
while(~scanf("%s",s))
{
cn(s);
printf("%d %d\n",num1,num2);
}
return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

我吧int去掉就正确了

我想要达到的结果

给我讲一下为什么吧

num 1 2作用域的问题
上面的1 2是全局变量。而cn里面的num 1 2是局部变量,
因为cn里面定义了num 1 2,所以你一开始写的num1 2在cn里面是不生效的,在cn里面改变的num1 2是改变他自己的值,不是全局变量的值。如果cn里面不去定义这两个变量,那么才会生效全局变量的那两个