Czy ten dostęp wielokrotny jest dozwolony?Czy ta wielokrotność uzyskuje dostęp do tego samego obiektu między punktami określającymi dobrze zdefiniowane zachowanie?
#include <iostream>
int main()
{
int A[1];
A[0] = 0;
A[A[0]] = 1;
std::cout << A[0];
}
w paragrafie następnym ...
ile nie zaznaczono inaczej, kolejność oceny argumentów poszczególnych operatorów i podwyrażeń poszczególnych wyrażeń, a kolejność , w którym odbywają się skutki uboczne , nie jest określone. Pomiędzy poprzednim a następnym punktem sekwencji obiekt skalarny musi mieć swoją wartość zapamiętaną zmodyfikowaną co najwyżej jeden raz przez oszacowanie wyrażenia . Co więcej, wcześniejsza wartość jest dostępna tylko dla określającej wartość, która ma być przechowywana. Wymagania niniejszego paragrafu: są spełnione dla każdego dopuszczalnego uporządkowania podwyrażeń pełnego wyrażenia ; w przeciwnym razie zachowanie jest niezdefiniowane.
Jeśli używa starej wartości A [0], powinno być niezdefiniowane zachowanie, prawda?
Skompilowany [tutaj] (http://ideone.com/VitzNp) dla każdego, kto chce grać. –
Nie, jest bardzo zdefiniowany i wydrukuje 1 na ekranie – Bregalad
@Ben To nie jest dowód, że nie jest niezdefiniowanym zachowaniem. –