大伙帮小弟我看看这里的全局变量为什么没有改叫

大伙帮我看看这里的全局变量为什么没有改叫?

test.getI()方法改变的是哪里的i呢?
#include <stdio.h>

int i = 1;

struct Test
{
public:
    int j;
        
    int getI()
    {
        
i=100;  //那么这里改变的是哪里的i值呢???
        
        return i;
    }
};

int main()
{
    int i = 2;
    
    Test test;
    
    test.j = 4;
    
    printf("i = %d\n", i);  //输出2
    printf("::i = %d\n", ::i);  //输出1
    printf("test.j = %d\n", test.j);  //输出4
    printf("test.getI() = %d\n", test.getI());   //输出100
printf("i = %d\n", i);  //输出2
    
    printf("Press any key to continue...");
    getchar();
    
    return 0;
}

------解决方案--------------------
在后面再加一句 printf("::i = %d\n", ::i); 你就会看到输出100了。改变了全局的i
------解决方案--------------------
引用:
test.getI()方法改变的是哪里的i呢?
#include <stdio.h>

int i = 1;

struct Test
{
public:
    int j;
        
    int getI()
    {
        
i=100;  //那么这里改变的是哪里的i值呢???
        
        return i;
    }
};

int main()
{
    int i = 2;
    
    Test test;
    
    test.j = 4;
    
    printf("i = %d\n", i);  //输出2
    printf("::i = %d\n", ::i);  //输出1
    printf("test.j = %d\n", test.j);  //输出4
    printf("test.getI() = %d\n", test.getI());   //输出100
printf("i = %d\n", i);  //输出2
    
    printf("Press any key to continue...");
    getchar();
    
    return 0;
}


改变的是全局的i

这种问题不清楚的情况下,就打印出i的地址,看看对比对比