• 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++

Object Storage Arubacloud
0 głosów
548 wizyt
pytanie zadane 22 marca 2020 w C i C++ przez wall7489 Obywatel (1,250 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 Maniak (56,980 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 Mędrzec (154,780 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,320 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 4,661 wizyt
pytanie zadane 27 sierpnia 2019 w C i C++ przez soq72630 Nowicjusz (180 p.)
0 głosów
1 odpowiedź 2,002 wizyt
pytanie zadane 27 sierpnia 2019 w C i C++ przez soq72630 Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 10,054 wizyt
pytanie zadane 17 kwietnia 2015 w C i C++ przez bartello88 Użytkownik (670 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...