poniedziałek, 24 czerwca 2013

Pułapka przypisania wartości / Assigment trap

Krótko i konkretnie, jako, że nie każdy mógł o tym wiedzieć.

Pierwsze pytanie, to jaką wartość dla x uzyskamy takim kodem?

byte x;
byte a=1;
byte b=2;
x=a=b;

Pomyśl nad prawidłową odpowiedzią chwilę...

Prawidłowa odpowiedź to 2
Mało tego, od powyższej instrukcji każda zmienna wynosi 2

Uzasadnienie jest proste, takie operacje przypisania wykonywane są od prawej do lewej strony, więc:
a=b;
x=a;

Jak to NIE działa
x=1=2;
Kompilator od razy powiadomi nas, o błędnym przypisaniu.
1 != 2

Trzeba sobie uświadomić, że w taki sposób można wartościować tylko zmienne i indexery, a samo 1 i 2 można potraktować jako const (1 to 1 a 2 to 2), tak samo z
bool b;
b=false=true;


To chyba koniec dobranocki, i uważajcie na takie proste błędy.
Diabeł tkwi w szczegółach

Brak komentarzy:

Prześlij komentarz

Jeżeli nie chcesz skorzystać z konkretnego profilu to zaznacz "Nazwa / adres URL" (wystarczy podać nazwę), bądź "Anonimowy"