Po pierwsze, jeśli zmiennej nie przypisano żadnej wartości, technicznie "niezdefiniowane zachowanie" oznacza cokolwiek innego niż przypisanie jej wartości.
Po drugie, dla XOR jest mało prawdopodobne, aby był szybszy na procesorze wyprodukowanym w ciągu ostatnich 15-20 lat, ponieważ wymaga dodatkowej lektury. Być może było to szybsze (z powodu bycia SHORTER CODE) bardzo długo, ale w rzeczywistości, wierzę, że nawet to jest fałszywe.
Edycja: Powinienem wskazać, że MOŻE być nadal szybszy/bardziej kompaktowy, aby XOR był rejestrem, aby był równy zeru we współczesnych procesorach. Ale jeśli założymy, że nie możemy się dowiedzieć, czy x
jest w rejestrze, czy nie, nie powinniśmy również komplikować bardziej skomplikowanego kompilatora w celu ustalenia, co faktycznie robimy.
Albo. Ale jeden jest bardziej czytelny. –
Wybierz tę, która jest ładniejsza. – Mysticial
Wybierz ładniejsze i pozwól, aby kompilator je zoptymalizował. – StoryTeller