Resultado da promoção conferência ESC Brazil 2013
- por Sergio Prado
Recebi 25 respostas para a promoção da conferência ESC Brazil 2013, com 16 respostas corretas e 9 erradas.
A resposta correta era a opção g). Como tivemos 16 acertadores, foi realizado um sorteio no site http://www.random.org/lists/ e o ganhador foi o Luís Filipe!
Para aqueles que não entenderam a resposta, vamos analisar a pergunta.
Qual das opções abaixo irá escrever o valor 0xA95E na posição de memória física 0x8E5D?
a) * (const uint16_t *) (0x8E5D) = 0xA95E; b) uint16_t *p = (uint16_t *) 0x8E5D; p = 0xA95E; c) * (uint16_t * const) (0xA95E) = 0x8E5D; d) uint16_t *p = (uint16_t *) 0xA95E; p = 0x8E5D; e) * (uint16_t const *) (0x8E5D) = 0xA95E; f) uint16_t *p = (uint16_t * const) 0xA95E; p = 0x8E5D; g) * (uint16_t * const) (0x8E5D) = 0xA95E; h) uint16_t *p = (const uint16_t *) 0x8E5D; p = 0xA95E; i) * (uint16_t const *) (0xA95E) = 0x8E5D; j) Todas as opções acima. k) Nenhuma das opções acima. |
A melhor forma de responder esta pergunta é por eliminação.
Como o objetivo é atribuir 0xA95E à posição de memória 0x8E5D, as opções c), d), f) e i) são eliminadas, já que elas estão tentando fazer o contrário, independentemente de outros erros que podem existir nestas opções. Consequentemente, a opção j) também é eliminada.
As opções b) e h) também devem ser eliminadas, já que elas não estão dereferenciando o ponteiro p, independente de problemas na declaração do ponteiro.
As declarações a) e e) são idênticas (“const uint16_t” e “uint16_t const” tem o mesmo efeito). E elas estão erradas, porque estão atribuindo um valor à um tipo de dado const.
Restam então as opções g) e k).
A opção k) pode ser eliminada já que a opção g) atribui corretamente o valor 0xA95E à posição de memória 0x8E5D.
Obrigado à todos pela participação!
Um abraço,
Sergio Prado