Dlaczego się nie stosuje if(!zmienna)

0

Witam
Spotkałem się z tym podczas review mojego kodu że nie nalezy stosować:
if(!zmienna)
Jeśli zmienna jest typu bool to nie rozumiem czemu miałbym stosować if(false == zmienna) a nie wolno mi if(!zmienna)?
Jeśli zmienna jest typu signed no to już rozumiem że if(!zmienna) zwróci true gdy zmienna jest 0 bądź ujemna.
Jeśli zmienna jest typu unsigned to też nie rozumiem czemu miałbym stosować if(false == zmienna) a nie wolno mi if(!zmienna)? No bo tutaj w ifa wejdziemy tylko wtedy gdy wynik w ifie będzie 0.
Więc tak czy siak gdy zmienna jest signed to widzę zagrożenie w tym ifie że ktoś oczekuje warunku na == 0 a tak naprawdę mamy warunek <=0. Ale dla typu bool czy unsigned to nie widzę żadnego zagrożenia.

0

Bo jest mniej czytelne. Czytający musi się zastanawiać co oznacza ten zapis. Szczególnie że C++ ma swoje niejawne konwersje którą bardzo skomplikować sytuacje. Kod pisze sie dla ludzi do czytania i tylko incydentalnie do uruchamiania na komputerze ;)

2

Jeśli zmienna jest typu signed no to już rozumiem że if(!zmienna) zwróci true gdy zmienna jest 0 bądź ujemna.

Nie widzę tu true -> http://ideone.com/ncm4A7

Ad tematu.
Stosuje się, tylko trzeba sensownie nazywać zmienne i funkcje. Wtedy ! z przodu jest dużo bardziej czytelny od == false.

0

Jeśli zmienna jest typu bool to nie rozumiem czemu miałbym stosować if(false == zmienna) a nie wolno mi if(!zmienna)?

Nie widzę powodu. Nie ma nic złego w if (!zmienna_bool).

Jeśli zmienna jest typu signed no to już rozumiem że if(!zmienna) zwróci true gdy zmienna jest 0 bądź ujemna.

Uważam że to zuo. jeśli zmienna nie jest boolem to nie powinno się robić if (zmienna) ani if (!zmienna) zamiast porównania do zera, tylko wyraźnie przyrównywać do zera.

if (zmienna == 0)
if (zmienna != 0)

1 użytkowników online, w tym zalogowanych: 0, gości: 1