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