在C中v 是否未定义?

我正在尝试编写一个函数来检查char* a[] ,并且经常最终使用类似的东西

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

现在我真的想把它改成a[i++] ,但它似乎不起作用。

题:

我在这里做错了什么,还是有一个干净的替代品来避免i++

注意:目前函数中我的13行中有3行是i++ ,这使得它看起来比它实际上要大得多。

if (a[i++] == 'x')本身在C中很好。但是,它在语义上是不同的:如果条件为真,原始代码只增加i ,而if (a[i++] == 'x')总是递增i

如果v[i]未定义且i++不会导致有符号整数溢出,则v[i++]未定义。

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

如果不等同于

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

因为前者在每次执行时都会输入,但后者只有当a[i] == 'x'为真时才会输入。

++i是避免使用i++的替代方案。 请注意, ++i的值与i++不同。 (++i)-1可能有用。