在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
可能有用。