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

Czy to poprawny zapis w tablicach ?

Ostatnio zmodyfikowano 2012-05-18 13:56
Autor Wiadomość
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 ?

C/C++
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ć.
P-56887
Admixior
» 2012-05-17 23:23:41
hmm... Widać najpierw zaczyna od prawej strony
C/C++
if( tablica[ indeks ] == tablica[ indeks++ ] );
// mozna rospisac
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?
P-56888
Trust
Temat założony przez niniejszego użytkownika
» 2012-05-17 23:30:16
yhymm dzięki :)

O jaki standard Tb chodzi ?
P-56889
m4tx
» 2012-05-18 10:01:38
O jaki standard Tb chodzi ?
Zapewne o standard C++03 :P
P-56890
DejaVu
» 2012-05-18 13:56:42
To jest UB (undefined behavior).

/edit:
Poza tym:
C/C++
//To ma sens:
if( tablica[ indeks ] == tablica[ indeks + 1 ] )
{
    cout << "powtorzenie";
}
++indeks;

//To nie ma sensu:
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?
P-56892
« 1 »
  Strona 1 z 1