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

Problem ze zrozumieniem warunków w if'ie.

Hosting forpsi easy 1 pln
0 głosów
258 wizyt
pytanie zadane 26 września 2016 w C i C++ przez Arkadiusz Sieczak Początkujący (400 p.)
#include <iostream>
using namespace std;
int main()
{
  int x = 0;
  int y = 0;
  if (x++ && y++)
  {
    y += 2;
  }

	cout << x + y <<endl;

  return 0;
}

Operator AND wymaga by obydwa warunki były prawdziwe, znam również operatory inkrementacji. Jednak czemu program zwraca wartość 1?

komentarz 26 września 2016 przez Arkadiusz Sieczak Początkujący (400 p.)
Bardzo dziękuję za pomoc!

3 odpowiedzi

+3 głosów
odpowiedź 26 września 2016 przez xandros Nałogowiec (29,450 p.)

 if (x++ && y++)

Sprawdzamy, czy x jest prawdziwy. Jak wiemy 0 jest traktowane jako false, więc zwraca false. Następnie inkrementujemy go, ponieważ dąłączyliśmy postinkrementacje. Jako że kompilator już wie, że ten warunek się nie wykona, nie będzie sprawdzał następnych wartości i tym samym nie zinkrementuje y.

+3 głosów
odpowiedź 26 września 2016 przez Ehlert Ekspert (210,670 p.)
int x = 0;
wypisz(x++); // 0
wypisz(x); // 1

x = 0;

wypisz(++x) //1
wypisz(x); // 1

Jaśniej? wink

komentarz 26 września 2016 przez Arkadiusz Sieczak Początkujący (400 p.)
teraz tak, dziękuję
+1 głos
odpowiedź 26 września 2016 przez Surykat Stary wyjadacz (14,760 p.)
Kiedy program sprawdza warunek, prawdopodobnie zdąży wykonać inkrementację dla x. W momencie sprawdzania x = 0, więc warunek będzie nieprawdziwy, ale zdąży on tego x zwiększyć o 1.

W efekcie wyświetlasz 1 + 0, czyli 1.

Y nie jest inkrementowany, bo przy operatorze and wystarczy, że jeden z argumentów jest równy zero, więc zmienna y nie została nawet tknięta. Tak mi się wydaję. :)
komentarz 26 września 2016 przez Ehlert Ekspert (210,670 p.)

Kiedy program sprawdza warunek, prawdopodobnie zdąży wykonać inkrementację dla x

To nie jest prawda.  

komentarz 26 września 2016 przez Surykat Stary wyjadacz (14,760 p.)
To jak to dokładnie jest?

Podobne pytania

0 głosów
5 odpowiedzi 632 wizyt
pytanie zadane 19 marca 2016 w C i C++ przez luparuwka Początkujący (400 p.)
0 głosów
2 odpowiedzi 2,038 wizyt
pytanie zadane 5 stycznia 2017 w C i C++ przez Niebieski_Zerg Użytkownik (610 p.)
0 głosów
1 odpowiedź 108 wizyt
pytanie zadane 16 lutego 2017 w JavaScript przez KONDZIU Użytkownik (550 p.)

92,117 zapytań

140,779 odpowiedzi

317,774 komentarzy

61,436 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 1014p. - Łukasz Eckert
  2. 1002p. - Dawid128
  3. 951p. - Mikbac
  4. 943p. - Michal Drewniak
  5. 933p. - rucin93
  6. 926p. - sefirek
  7. 887p. - CC PL
  8. 882p. - Adrian Wieprzkowicz
  9. 869p. - TheLukaszNs
  10. 865p. - Eryk Andrzejewski
  11. 850p. - nidomika
  12. 817p. - Arkadiusz Waluk
  13. 813p. - Henry Saele
  14. 802p. - 13NOONE37
  15. 794p. - the Bielsky
Szczegóły i pełne wyniki

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.

Uwaga - w dniach od 02.12 do 08.12 trwają Mikołajki (książki drukowane mają rabat -35%, ebooki do -45%). Zaś dodatkowy, specjalny kod zniżkowy: HELMIKOLAJ-10 dla naszych Widzów zapewni Wam oszczędność -10zł dla zamówień powyżej 70zł! Warto korzystać!

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...