¿Está v indefinido en C?

Estoy tratando de codificar una función que verifica una a través de un char* a[] , y a menudo termino usando algo como

 if(a[i] == 'x'){ i++; //... } 

Ahora realmente me gustaría cambiar esto a a[i++] lugar, pero no parece funcionar.

Pregunta:

¿Estoy haciendo algo mal aquí, o hay una alternativa limpia para evitar el i++ ?

Nota: Actualmente, 3 de mis 13 filas en la función son i++ , lo que hace que se vea significativamente más grande de lo que realmente es.

if (a[i++] == 'x') por sí solo está bien en C. Sin embargo, es semánticamente diferente: su código original solo incrementa i si la condición es verdadera, mientras que if (a[i++] == 'x') siempre incrementa i .

v[i++] no está indefinido si v[i] no está indefinido e i++ no causa un desbordamiento de entero con signo.

 if(a[i++] == 'x'){ ... } 

si no es equivalente a

 if(a[i] == 'x'){ i++; ... } 

porque el primero inclina i cada vez que esto se ejecuta, pero el último inclina i solo si a[i] == 'x' es verdadero.

++i es una alternativa para evitar i++ . Tenga en cuenta que el valor de ++i difiere de i++ . (++i)-1 puede ser útil.