Magia kodu

Dziś krótki wpis. Raz na jakiś czas zdarza mi się spotykać z rzadkimi sytuacjami w kodzie. Jedne wzbudzają śmiech, inne są brzydkie na tyle, że bym nigdy więcej nie chciał ich oglądać. Przedstawię tu kilka z nich.

C

Dlsym

Przykład podany na wielu stronach brzmi mniej więcej tak:

double (*cosine)(double);
//coś dalej
*(void **) (&cosine) = dlsym(handle, "cos");

Nasuwa się pytanie: czemu nadpisywać wskaźnik na wartość do wskaźnika? Otóż standard ISO C nakłada pewne wymagania na składnię i w tym miejscu wyrzuciłby ostrzeżenie. Można zapisać to prościej, jednak wtedy możemy liczyć na humory GCC.

Magiczna zamiana

Działanie sprawdźcie sami :-) .

a^=b^=a^=b;

Powyższy zapis pozwala na zamianę dwóch zmiennych miejscami bez używania zmiennej tymczasowej.

Perl

Perl, podobnie jak kilka innych języków, słynie z możliwości zapisu jednej rzeczy na kilka sposobów. Nie można więc pominąć tego jak poniżej.

Operacje jako warunki

($a == $b) && ($c = 2) ($print $c);

Nie trzeba używać struktur kontrolnych i bloków. Sposób wyznaczania wartości wyrażenia złożonego robi wszystko.

Globowanie


while (<>) {
    chomp;
    print;
}

Bardzo treściwa wersja programu wyświetlającego nazwy plików.

Java

Tak po prostu wpadło mi do głowy:

class Klasa {
    //wnętrze klasy
    int a;;;;;;;;;
}

Tak, chodzi o średniki :-). Tego typu zapis jest jak najbardziej poprawny