文字列strの中の数字文字だけ削除する関数を作ったのですが、

void del_digit(char str[])
{
unsigned i = 0;
unsigned j;

while(str[i]){
if (str[i] >= '0' && str[i] <= '9'){
j = 0;
while(str[i + j])
str[i + j] = str[i + ++j]; //A
}else
i++;
}
}

//Aのところを
str[i + j++] = str[i + j];
とするとうまくいきません。
左辺を読み込んだ時点でjはインクリメントされるわけではないのでしょうか?