是否遵循等效的代码示例?
此:
while (true)
if (!a[counter] || !b[counter++]) break;
和此:
while (true){
if (!a[counter] || !b[counter]) break;
counter++;
}
我的意思是,在所有条件之后都会增加。检查完成了吗?
下面:
int _strCmp(char* s1,char*s2)
{
int counter = 0;
while (s1[counter]==s2[counter])
if (!s1[counter] || !s2[counter++]) return 0;
if (s1[counter] > s2[counter])
return 1;
if (s1[counter] < s2[counter])
return-1;
return 0;
}
在某些情况下,当此功能无法正常工作时?
答案 0 :(得分:4)
不,他们不是。
如果!a [counter]返回true,则不会评估OR条件
仅在第一个条件为假时才评估OR中的第二个条件。这是因为任何与真实相关的东西都是真的。
请看下面的图片:
如图所示,您可以看到案例2不等同
答案 1 :(得分:0)
由于它在评估后递增(而不是++counter
),因此返回的值是递增之前的值。所以,那些是等同的陈述。
如果counter = 6
,则!b[counter++]
将返回b[6]
,然后将6
增加到7
。
答案 2 :(得分:0)
您可以自己尝试将代码更改为:
run = 5;
while (run > 0) {
run--;
if (!a[counterA] || !b[counterA++]) break;
}
run = 5;
while (run > 0){
run--;
if (!a[counterB] || !b[counterB]) break;
counter++;
}
// compare counterA and counterB
编辑:
关于&#34;我的意思是,在所有条件之后都会增加&#39;检查完成了吗?&#34;
没有。有post和preincrement操作。由于您正在进行后期增量,因此在使用其值来评估表达式后,您的值将会增加。