int test[2] = { 45, test[0] };
int x = (x = 111);
cout << test[0] << " " << test[1] << " " << x << "\n"; // 45 45 111
Являются ли назначения в первых двух строках законными? Visual Studio 2010 компилирует и запускает его без каких-либо ошибок или предупреждений, но это похоже на нечетный случай, который может быть undefined, поэтому я хотел подтвердить его приемлемость. Visual Studio предупреждает меня, если я делаю что-то явно рефлексивное (и, предположительно, undefined), как int x = x;
, поэтому мне интересно, как справляются с этими ситуациями.