Fawkes
(usa Ubuntu)
Enviado em 20/12/2013 - 19:07h
Olá, tenho uma dúvida pertinente, que realizei alguns testes e não consegui sanar.
Bom, eu gostaria de saber em qual ordem que o compilador "lê" a minha linha de código.
por exemplo:
vamos supor que eu tenha o seguinte trecho de código:
-------------
int N, M;
N = M = 0;
-------------
Neste caso, o compilador separaria uma parte(como é int, 4 bytes) da memória para N e para M, e depois na segunda linha(aí que vem a dúvida), de duas uma:
O compilador "lê" N iguala a "M" e iguala ambos à zero.
OU
O compilador "lê" o zero, coloca na memória de M, depois pega o valor de M, que é zero, e coloca na memória de N.
Ou seja, é da direita para a esquerda, ou da esquerda para a direita ?
Não sei se ficou claro a dúvida, mas em um teste que fiz:
--------------
int i=0; /*apenas declarei a variável i, e atribuí o valor zero à ela*/
printf("%d", i++); /*Imprime 0*/
printf("%d", i); /*Imprime 1*/
--------------
Pelo que entendi do código a cima, na segunda linha, o compilador parece(pelo que entendi)"ler" da esquerda para a direita, atribuindo ao tipo %d o valor de i, e após imprimir, o i é incrementado, pois na terceira linha ele é impresso como 1.
O trecho de código abaixo, inverte a posição do ++:
--------------
int i=0; /*apenas declarei a variável i, e atribuí o valor zero à ela*/
printf("%d", ++i); /*Imprime 1*/
printf("%d", i);
--------------
Já nesse caso, na segunda linha, (pelo que entendi) o compilador "lê" da esquerda para a direita, e ao ler o que será impresso (que fica após as aspas e a vírgula, como é nome desse espaço ?), ele primeiro "lê" os ++ e incrementa a variável a seguir que neste caso é o i, e após isso atribui ao %d para ser impresso.
Em fim, qual é a ordem de "leitura" do compilador ? Tive alguns professores que me disseram que o compilador "lê" da direita para a esquerda, a partir do ponto e vírgula(;), mas o compilador realmente possui uma ordem ? E se algo que eu disse a cima estiver errado me corrija por favor.
Grato !