Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Inkrementacja

Ostatnio zmodyfikowano 2017-01-05 13:32
Autor Wiadomość
CCbolt
Temat założony przez niniejszego użytkownika
Inkrementacja
» 2017-01-05 06:13:28
Nie rozumiem czemu w pierwszym przypadku inkrementalna następuję automatyczni a w drugim nie, ktoś mi wyjaśni to?
3-4 kod ten sam problem ale w odwrotnej kolejności

C/C++
#include <stdio.h>

int main() {
   
    int i = 3, j = 4, k = 5;
   
   
    printf( "%d\n", i < j && ++j < k );
    printf( "%d%d%d\n", i, j, k );
    return 0;
}


C/C++
#include <stdio.h>

int main() {
   
    int i = 3, j = 4, k = 5;
   
   
    printf( "%d\n", i < j || ++j < k );
    printf( "%d%d%d\n", i, j, k );
    return 0;
}

C/C++
#include <stdio.h>

int main() {
   
    int i = 7, j = 8, k = 9;
   
   
    printf( "%d\n", i - 7 && j++ < k );
    printf( "%d%d%d\n", i, j, k );
    return 0;
}



[ cpp ]
#include <stdio.h>

int main() {
   
    int i = 7, j = 8, k = 9;
   
   
    printf( "%d\n", i - 7 || j++ < k );
    printf( "%d%d%d\n", i, j, k );
    return 0;
}
P-156012
mokrowski
» 2017-01-05 09:40:54
Operator || (or) oraz && (and) pracują w sposób leniwy. Nie wartościują 2 części wyrażenia jeśli nie jest to konieczne.
Jeśli w || czyli or pierwsza część wyrażenia zwraca true, nie jest przetwarzana 2 część (po ||) bo bez względu na jej wynik, wynik całości wyrażenia się nie zmieni.
Jeśli w && pierwsza część zwraca false, nie jest przetwarzana 2 część (po &&) bo bez względu na wynik 2 części wyrażenia, wynik całości wyrażenia się nie zmieni.

Swoją drogą:
1. Ujmuj operacje w nawiasy bez względu na to czy pamiętasz czy nie kolejność wiązania operatorów.
2. Zastanów się czy nie warto stosować słów kluczowych and i or zamiast && i || (tu się nie będę upierał ale już widziałem takie wykładnie u 2 klientów).
3. Przeczytaj o punktach sekwencyjnych bo to co napisałeś łamie te zasadę http://en.cppreference.com/w​/cpp/language/eval_order
P-156015
pekfos
» 2017-01-05 11:22:48
3. Przeczytaj o punktach sekwencyjnych bo to co napisałeś łamie te zasadę
W którym miejscu?

@down: Nie działa.
P-156017
mokrowski
» 2017-01-05 12:00:31
@up, masz rację. Szybkie czytanie wrogiem dokładności. i/j mignęło w oczach. Wpis pozostawię dla kogoś kto będzie szukał.

PS. Czy wyszukiwarka na forum działa?
P-156018
Gibas11
» 2017-01-05 13:32:15
@up Nie, użyj google.
site:cpp0x.pl Coś czego szukam
.
P-156020
« 1 »
  Strona 1 z 1