(++i)*(++i)

Jan Kurik kurik na reax.cz
Pátek Leden 29 17:03:50 CET 1999


pro i = 10
>(i++)*(i++) = 100
>(i+1)*(i+1) = 121
>(i+1)*(i+2) = 132
>(i+2)*(i+2) = 144
>(++i)*(++i) = 144
>
>takze konstrukce >>(++i)*(++i)<< udela totez co >>(i+2)*(i+2)<<, coz je
podle mne vzhledem k priorite
>zavorek OK. Zkusil jsem to i na "MS VisualC++ 5.0" a vysledky byly stejne.


    Jak jsem byl upozornen, tak jsem se jeste jednou zamyslel a asi to fakt
neni jednoznacne. Ten vyraz lze vyhodnotit dvemi postupy, ktere jsou asi oba
ve shode s normou :

1a : vyhodnot prvni zavorku (++i)
1b : vyhodnot druhou zavorku (++i)
1c : proved i*i

2a : vyhodnot prvni zavorku (x = ++i)
2b : vyhodnot druhou zavorku (y = ++i)
2c : proved x*y

    Pak jsou vysledky odlisne a zalezi na kopilatoru. Nebo je snad nekde
specifikovano, jak takovy vyraz vyhodnotit ?


Jan Kurik <kurik na reax.cz>




Další informace o konferenci Linux