Учитывая следующий надуманный пример кода:
struct abc
{
int x[5];
int y[5];
};
void main()
{
struct abc test;
test.y[0] = 10;
printf("%n", test.x[5]);
}
Вывод программы - 10.
Хотя это и не лучшая практика программирования, но это работает. Однако является ли это артефактом компилятора и платформы или это законный код? (т.е. определено стандартом C?)
Даже если результат не гарантированно равен 10, существует ли когда-нибудь случай, когда это было бы «незаконным» (т.е. запись в память, которой я не «владею»)?