hilpers


  hilpers > comp.lang.* > comp.lang.c

 #1  
01.03.2010, 11:57
Mariusz Marszałkowski
Witam

Czy standardy C/C++ mówią coś o takiej składni, w której to właśnie
zmienna/stała
indeksująca ma wartość ujemną? Czasami używałem ujemnych indeksów i
nie
miałem kłopotów. Ostatnio napisany kod też sprawował się dobrze, ale
gdy skompilowałem
w gcc 4.4 (windows xp home, intel atom N270) z -fprofile-generate to
się wywalił. Coś mnie
tknęło aby tablica[-1].pole zamienić na (tablica-1)->pole. Po zamianie
kompiluje się i
uruchamia z dowolnymi opcjami.

Czyli zamiana wpłynęła korzystnie. Czy używanie ujemnych wartościnie
gwarantuje
poprawnego zachowania? Czy to błąd gcc?

Pozdrawiam
 #2  
01.03.2010, 15:03
Michoo
Mariusz Marszałkowski pisze:
> Czyli zamiana wpłynęła korzystnie. Czy używanie ujemnych wartości nie
> gwarantuje
> poprawnego zachowania? Czy to błąd gcc?

5.2.1
The expression E1[E2] is identical (by definition) to *((E1)+(E2)).

Więc powinno to działać. Nie sprawdzałeś debuggerem na czym wybucha
(zwłaszcza flagi procesora)?
 #3  
01.03.2010, 23:39
Mariusz Marszałkowski
On 1 Mar, 16:03, Michoo <michoo_n> wrote:
> Mariusz Marsza kowski pisze:> Czyli zamiana wp yn a korzystnie. Czy u ywanie ujemnych warto ci nie
> > gwarantuje
> > poprawnego zachowania? Czy to b d gcc?

>
> 5.2.1
> The expression E1[E2] is identical (by definition) to *((E1)+(E2)).
>
> Wi c powinno to dzia a . Nie sprawdza e debuggerem na czym wybucha
> (zw aszcza flagi procesora)?
>


Nie sprawdzilem na czym sie wywala. Nie wiem czy by sie dalo, moze z
opcjami dla debugera juz przestanie sie wywalac.

Troche dziwne ze *(x-1) dziala, a x[-1] juz zawiesza.

Pozdrawiam
 #4  
02.03.2010, 20:16
Pawel Kierski
W dniu 2010-03-02 01:39, Mariusz Marszalkowski pisze:
> On 1 Mar, 16:03, Michoo<michoo_n> wrote:
>
> Nie sprawdzilem na czym sie wywala. Nie wiem czy by sie dalo, moze z
> opcjami dla debugera juz przestanie sie wywalac.
>
> Troche dziwne ze *(x-1) dziala, a x[-1] juz zawiesza.


Dziwne, bo na tej definicyjnej równowaznosci oraz przemiennosci
dodawania opiera sie IOCCC'owy trick z -1[x] - tez powinien dzialac.
Podobne wątki
Co lepsze, tablica tablica, czy tablica obiektów

Witam! Mam taką sytuację: Jest sobie w bazie tabelka z działaniami (nie matemetycznymi), w której zapisane są dane typu jakiego rodzaju to jest działanie (np. Skoczenie do...

Dynamiczna tablica rekordów a tablica obiektów - alokacja pamięci

Może ktoś potrafi mi wyjaśnić jak to się dzieje, że gdy zapuszczę w pętli coś takiego: for i:=1 to 10000 do SetLength(TabRek,High(TabRek)+2); pomijając elegancję i sens...

różnica tablica wskaźników a synamiczna tablica

hej, na czym polega różnica pomiędzy tablicą wskaźników a tablicą alokowaną dynamicznie w pamięci a jeszcze tablicą dynamiczną. o ile dobrze rozumiem to: np. int *a[20]; to...

tablica permutacji <=> tablica inwersji

witam Załóżmy, że permutujemy zbiór liczb naturalnych od 1 do N. Zapiszmy elementy permutacji w tablicy A[1..N]. Każdej permutacji można w sposób wzajemnie...


Czasy w strefie GMT. Teraz jest 23:11. | Privacy Policy