Jestem trochę zdezorientowany tym, jak kompilator C# obsługuje przyrosty i dekrementy przed i po.C# konflikty przed i po inkrementacji
Kiedy kodować następujące:
int x = 4;
x = x++ + ++x;
x
będzie miał wartość 10 później. Sądzę, że dzieje się tak dlatego, że pre-increment ustawia x
na 5
, co powoduje, że jest to 5+5
, co oznacza . Wtedy post-inkrementacja zaktualizuje x
do 6
, ale ta wartość nie będzie używana, ponieważ wtedy 10
zostanie przypisana dozostanie przypisana do.
Ale gdy kod I:
int x = 4;
x = x-- - --x;
następnie x
będzie 2
później. Czy ktoś może wyjaśnić, dlaczego tak się dzieje?
Świetne pytanie! I nauczyliśmy się nigdy pisać kodu, trzeba myśleć o tym, co może zrobić, ale co by to zrobiło. – RvdK
Każdy, kto pisze taki kod, powinien zostać zabity i postrzelony. Nie ma żadnego usprawiedliwienia dla 'x = x ++ + ++ x;' ... ever. –
to było tylko pytanie "akademickie" - nigdy nie pisałbym też kodu :-) – Schweder