Per quanto ne sappia, scrivere
a*=2
equivale a scrivere
a=a*2
ovvero a moltiplicare per due il "vecchio" valore di a.

E allora perché se esegue questo codice:
codice:
 
#include<stdio.h>
int main(){
  int vet[]={1,2,3,4,5,6};
  int i; int p=1;
  for(i=1;i<6;i++){ p*=vet[i]/2; printf("%d ",p);}
  return 0;
}
ottengo
1 1 2 4 12

mentre sostituendo
p=p*vet[i]/2 al posto di p*=vet[i]/2
ottengo
1 1 2 5 15
?