在C中v [i ++]是否未定义?

时间:2015-09-26 15:12:32

标签: c

我正在尝试对通过O(n^2)进行检查的函数进行编码,并且通常最终会使用类似

的内容
char* a[]

现在我真的想将此更改为if(a[i] == 'x'){ i++; //... } ,但它似乎不起作用。

问题:

我在这里做错了什么,还是有一个干净的选择来避免a[i++]

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

如果alert(optionString.indexOf('₹')); // returns -1 未定义且v[i++]不会导致有符号整数溢出,则

v[i]未定义。

i++

如果不等同于

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

因为前者在每次执行时都会if(a[i] == 'x'){ i++; ... } ,所以 但后者仅在i为真时才会i。{/ p>

a[i] == 'x'是避免++i的替代方法。请注意,i++的值与++i不同。 i++可能有用。