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ę.