Czy to poprawny zapis w tablicach ?
Ostatnio zmodyfikowano 2012-05-18 13:56
Trust Temat założony przez niniejszego użytkownika |
Czy to poprawny zapis w tablicach ? » 2012-05-17 23:11:40 Witam !!! Czy poniższy zapis jest poprawny ? if( tablica[ indeks ] == tablica[ indeks++ ] ) { cout << "powtorzenie"; }
Jeżeli tablica o indeksie 1= 5, jest równa tablicy o indeksie 2 (czyli nasz indeks ++) to wyświetli napis powtórzenie. Niby mi wyświetla, ale chce się upewnić. |
|
Admixior |
» 2012-05-17 23:23:41 hmm... Widać najpierw zaczyna od prawej strony if( tablica[ indeks ] == tablica[ indeks++ ] );
indeks = 1; costam = tablica[ indeks++ ]; indeks = 2; costam2 = tablica[ indeks ];
if( costam2 == costam )
Sądzę że tak jest bo używasz operatora postinkrementacji, a wyniki są poprawne. Gdyby było na odwrót to by porównywało ci za każdym razem 2 te same elementy tablicy. Czy jest dobrze? hmm... Jeśli działa dobrze to jest dobrze, ale nigdy nie wiadomo czy inny kompilator(zgodny lub nie ze STD) nie umyśli sobie zrobić tego na odwrót.(a jeśli działa źle to zrób preinkrementacje) Swoją drogą. Czy jest coś na ten temat w standardzie? |
|
Trust Temat założony przez niniejszego użytkownika |
» 2012-05-17 23:30:16 yhymm dzięki :)
O jaki standard Tb chodzi ? |
|
m4tx |
» 2012-05-18 10:01:38 O jaki standard Tb chodzi ? |
Zapewne o standard C++03 :P |
|
DejaVu |
» 2012-05-18 13:56:42 To jest UB (undefined behavior).
/edit:
Poza tym:
if( tablica[ indeks ] == tablica[ indeks + 1 ] ) { cout << "powtorzenie"; } ++indeks;
if( tablica[ indeks ] == tablica[ indeks ] ) { cout << "powtorzenie"; } ++indeks;
Zapis, który stosujesz można interpretować dwojako. Ja zinterpretowałem to od lewej do prawej, więc Twój kod z mojego punktu widzenia nie ma sensu. Ponadto jeżeli nie wiesz jak się zachowa kod to po co używasz takiego zapisu? |
|
« 1 » |