Inkrementacja
Ostatnio zmodyfikowano 2017-01-05 13:32
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 #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; }
#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; }
#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; }
|
|
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 |
|
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. |
|
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? |
|
Gibas11 |
» 2017-01-05 13:32:15 @up Nie, użyj google. site:cpp0x.pl Coś czego szukam . |
|
« 1 » |