-
for (a = 2; a <= 10; a += 2) { ---> a = 2
for (b = a; b <= 2; b++) { ---> b = a('b' recebe 'a' que é 2) logo b=2
for (c = 1; c <= a; c += b) { ---> c=1
System.out.print("" + a + b + c);
}
}
}
O ponto importante desta questão é que me nenhum momento é atribuido valor as varáveis, por isso a saída será: 221 letra e.
-
Segue para discussão:
Discordo da afirmação do colega Rhedson Esashika. Existem 3 atribuições. O primeiro argumento da estrutura for nada mais é do que uma atribuição. Justamente por isso, a saída é 221, pois existem 3 atribuições, sendo uma para a (a=2), uma para b (b=a) e uma para c (c=1).
Respeitosamente,
-
Acho que o segredo para acertar essa questão era lembrar que a variável "só muda na posição de memória" quando o laço inicia novamente
----
O laço funciona da seguinte maneira:
O laço se inicia pela condição inicial. Geralmente se inicia o contador. Esse primeiro estágio SEMPRE acontece.
O segundo estágio é o teste da condição do laço. Caso seja verdade, o código é executado.
Ao término de execução do código, ocorre o fator de mudança, que geralmente é um incremento ou decremento.
Depois a condição é testada novamente. Caso retorne 'true', o código é executado.
Ao término de execução do código, sempre ocorre o fator de mudança...e assim sucessivamente.
http://www.javaprogressivo.net/2012/08/laco-for-tendo-um-maior-controle-sobre.html
-
O segredo da questão é saber que System.out.print("" + a + b + c) é diferente de System.out.print(a + b + c) e de System.out.print(a + b + c + "").
-
compilei o código para confirmar e realmente é 221