Является ли `* - p` действительно допустимым (правильно сформированным) в C ++ 03

Меня интересует этот пример кода:

int main()
{
   char *p ;
   char arr[100] = "Hello";
   if ((p=arr)[0] == 'H') // do stuffs
}

Действительно ли этот код хорошо сформирован в C ++ 03?

Мой аргумент заключается в том, что побочный эффект = завершается только после следующей точки последовательности, и поскольку мы обращаемся к результату p = arr , код может быть неправильно сформирован, между = и [] отсутствует порядок ] операции.

Я прав?

Поведение хорошо определено в C и C ++ 11. Этот код фактически получен из MySQL.

13
задан Mat 13 January 2012 в 07:45
поделиться