• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Operator negacji w C++

0 głosów
151 wizyt
pytanie zadane 22 marca 2020 w C i C++ przez wall7489 Obywatel (1,230 p.)
zamknięte 24 marca 2020 przez wall7489
Mógłby ktoś dokładnie opisać i podać przykłady oraz zastosowania z operatorem negacji w C++

? Chodzi mi o ten wykrzyknik-     !

Wogóle nie rozumiem o co w nim chodzi i do czego się przydaje.
komentarz zamknięcia: Odpowiedź poprawna
komentarz 22 marca 2020 przez Whistleroosh Nałogowiec (34,060 p.)

To ma też fajne zastosowanie, jeżeli implementujesz BFS albo Dijsktrę. Wtedy jeżeli mamy kolejkę o nazwie Q, na której trzymamy wierzchołki, które będziemy chcieli w przyszłości rozważyć to wystarczy stworzyć pętlę:

while(!Q.empty())
{
     auto front = Q.front();
     Q.pop();

    //rób coś
}

i dzięki temu odwiedzimy wszystkie wierzchołki

2 odpowiedzi

+1 głos
odpowiedź 22 marca 2020 przez tangarr VIP (140,280 p.)
wybrane 22 marca 2020 przez wall7489
 
Najlepsza

Operator negacji (jak sama nazwa wskazuje) neguje wartość wyrażenia logicznego zgodnie z tabelką:

p !p
true false
false true

Negacji używasz kiedy chcesz sprawdzić odwrotny warunek.
Przykład: Klasa std::vector posiada metodę empty() która zwraca true gdy kontener jest pusty. Jeżeli chcesz wykonać obliczenia gdy vector posiada jakieś dane negujesz wynik funkcji empty()

std::vector wektor;
...
if (!wektor.empty()) {
    std::cout << "Wektor nie jest pusty";
}


 

+1 głos
odpowiedź 22 marca 2020 przez Kapa Początkujący (380 p.)
Operator negacji zwraca wartość przeciwną, czyli z wartości TRUE robi wartość FALSE, a z wartości FALSE robi wartość TRUE.

Zamiast pisać np.

if(plik.is_open()==false) cout<<"Błąd otwarcia pliku";

możesz napisać:

if(!plik.is_open()) cout<<"Błąd otwarcia pliku";

Jeżeli metoda is_open() zwróci wartość false, to operator '!' zrobi z tej wartości TRUE i dzięki temu if zostanie spełniony. Niektórzy uważają że ten operator jest nie czytelny, utrudnia zrozumienie kodu i nie zalecają go w ogóle używać.
komentarz 22 marca 2020 przez Patrycjerz Mędrzec (192,460 p.)

Niektórzy uważają że ten operator jest nie czytelny, utrudnia zrozumienie kodu i nie zalecają go w ogóle używać.

To zależy, gdzie go używasz. Jeśli do zrobienia przeciwnego warunku

if (!wartosc) {
    // ...
}

to może to być dla niektórych mniej czytelne niż

if (wartosc == false) {
    // ...
}

Ale jeśli chcemy obliczyć wartość złożonego wyrażenia

bool implikacja = !p || q;

to jest to wg mnie bardziej zrozumiałe niż

bool implikacja = p == false || q;
komentarz 22 marca 2020 przez Kapa Początkujący (380 p.)
No racja :)

Podobne pytania

0 głosów
2 odpowiedzi 2,823 wizyt
pytanie zadane 27 sierpnia 2019 w C i C++ przez soq72630 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 1,077 wizyt
pytanie zadane 27 sierpnia 2019 w C i C++ przez soq72630 Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 7,978 wizyt
pytanie zadane 17 kwietnia 2015 w C i C++ przez bartello88 Użytkownik (670 p.)

88,701 zapytań

137,308 odpowiedzi

306,748 komentarzy

58,894 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...