Porque x é uma variável global, logo ela pode ser usada e alterada por toda parte do programa. Diferente da variável y que foi declarada dentro da função main e que só pode ser usada na mesma, ou seja, ela possuí um escopo limitado. Nessa ocasião, y é uma variável local.
P
pp4
Opa Jelson, obrigado pela resposta, então a variável global se caracteriza por estar acima da funcao principal, certo? Quando coloco uma variável pra receber o parâmetro, por exemplo, na função principal quando eu declaro a função int param(x), e aí eu chamo a função e coloco o parâmetro (int x) na função int param(int x), o x não muda o valor na função principal, por que acontece isso? Agora quando eu deixo a função vazia, sem receber parâmetro, tipo int param(), a variável x vira global, não entendi isso… poderia me explicar? Obrigado!
J
Jelson1
Eu não diria acima da função principal, mas sim, aquela variável que não tem seu escopo limitado, ou seja, ela pode ser acessada por outros métodos, funções, etc.
No exemplo abaixo a variável y tem seu escopo limitado, ela só existe dentro da função teste(). Logo ela é uma variável local.
voidteste(){inty=10;}
Falo isso, porque em outras linguagens você pode criar variáveis globais depois da função principal, ou até mesmo durante o programa.
Nesse caso o x é um parâmetro para a função param(int x), que não deixa de ser uma variável local dessa função. E quando você declarar uma variável local com o mesmo nome que a variável global a função dará preferência a variável local.
É por isso que o valor da variável x (global) permanece inalterada.