Niełatwe zagadki z C

Dzięki reddit.com/r/programming znalazłem stronę z nie-prostymi pytaniami z języka C.

Takim pytaniami, nie sprawdzają się wiedzy odnośnie języka. One pokazują, że nie masz 100% wiedzy o języku programowania, mimo że możesz śmiało się nazwać ekspertem w danym języku.

Osobiście nie byłem wstanie odpowiedzieć prawidłowo na 50% pytań.

Przykładowe pytanie:

#include <stdio.h>

int main(void)
{
int i = 3;
int j;

j = sizeof(++i + ++i);

printf("i=%d j=%dn", i, j);

return 0;
}

Możliwe odpowiedzi:

  • i=4 j=2
  • i=3 j=2
  • i=5 j=2
  • wynik nie jest określony

 Odpowiedź:

Rozwiązanie tej zagadki to i=3 j=2 (rozmiar j zależy od kompilatora z którego się korzysta, np. w VS2010 j=4. Całe szczeście, że na stronie znajdują się wyjaśnienie dlaczego jest taki wynik a nie inny. W tej zagadce trzeba było wiedzieć o tym, że operacje matematyczne w wewnątrz sizeof nie są wykonywane.

Jeżeli błędnie rozwiązałeś tą zagadkę lub intrygują cię podobne zagadki wejdź na podaną stronę.