Меня интересует этот пример кода:
int main()
{
char *p ;
char arr[100] = "Hello";
if ((p=arr)[0] == 'H') // do stuffs
}
Действительно ли этот код хорошо сформирован в C ++ 03?
Мой аргумент заключается в том, что побочный эффект =
завершается только после следующей точки последовательности, и поскольку мы обращаемся к результату p = arr
, код может быть неправильно сформирован, между =
и []
отсутствует порядок ] операции.
Я прав?
Поведение хорошо определено в C и C ++ 11. Этот код фактически получен из MySQL.