segunda-feira, 21 de abril de 2008

Ponteiros do Mal

Interessante a questão de uma prova, que um amigo meu fez para arrumar um emprego: Davam o seguinte codigo e pediam para falar o que o programinha ia cuspir na tela quando fosse executado:



#include <iostream.h>

int main()
{
int x = 10;
int *p;
int **q;

p = &x;
q = &p;

cout<<**q++<<endl;

return 1;

}


E aí campeão? qual o retorno do cout?


...


...


11, certo?


...

Não, cazzo! uma coisa que a gente sempre esquece é que o operador x++ é o operador de pós-incremento, ou seja, a variável x só vai ser incrementada no ciclo seguinte, fazendo com que o programa imprima "10" na tela. A baguncinha com os ponteiros foi só para tirar a atenção disso, que era o que realmente estava sendo avaliado nessa questão... :-P