я наткнулся на этот кусок кода в C:Последовательное назначение указателя с постинкремента
*p++=*q++=*r++;
На мой взгляд, это ошибочное, потому что я не могу вспомнить какое-либо правило в C, указывающий когда ++
после ц должен быть фактически проведен - до назначения между *p++
и *q++
, или после?
Поэтому у меня сложилось впечатление, что это может очень вероятно, будет неопределенное поведение, но не мог точно определить, где именно в C стандартов (C89 или C99) это объясняется.
Здесь очень ценят помощь от языковых полицейских. Прошу пролить свет.
Не имеет значения: значение 'q ++' является значением 'q' перед приращением. 'q' - указатель, назначение - на то, что указывал q. Похож на внутренний цикл симпатичного li'l two-fer 'strcpy()', 'while (* p ++ = * q ++ = * r ++) {}' будет делать две копии строки 'r' на' p' и 'q'. – jthill