Если цель состоит в том, чтобы просто убрать ;
в середине, чтобы вы могли использовать его в контексте макроса или как отдельный оператор без фигурных скобок, попробуйте использовать оператор запятую *1003*:
A[j]=A[j-1], j--;
или если вы хотите присвоить значение в результате выражения:
j--, A[j+1]=A[j];
Оба должны генерировать идентичный код на приличном компиляторе, если результат выражения не используется.
Как уже говорили другие, любая попытка сделать это без оператора запятой приведет к неопределенному поведению из-за проблем с точкой последовательности.Если у вас нет веских причин для сжатия кода, подобного этому, я бы рекомендовал даже не делать этого.Если вы не очень разбираетесь в C, вы почти наверняка перепутаете это и вводите тонкие ошибки (некоторые из которых могут проявиться не с вашим текущим компилятором, а в будущих версиях, создавая ад для тех, кто застрянет, отлаживая код).