我正在尝试在字符串中查找子字符串。在执行此操作时,我了解如果我们编写
,请检查for
中的多个条件
for(i=0;condition1,condition2;i++)
找到condition1
的值然后丢弃。然后,找到并返回condition2
的值。为了解决这个问题,我们需要使用&&
,以便here中的for
循环检查多个条件。
for(i=0;condition1&&condition2;i++)
到目前为止,我认为我理解正确,但以下for
循环无效。
for(i=0;(a[i]!='\0')&&(a[i]==b[0]);i++)
{
j=i+1;
k=1;
while(a[j]==b[k]&&a[j]!='\0'&&b[k]!='\0')
{
j++;
k++;
}
if(b[k]=='\0')
{
return i;
}
}
return -1;
当我编写上面的for
循环时,控件进入循环并执行操作,而在下面的代码中,控件甚至没有进入for
循环,并且它正常工作
for(i=0;a[i]!='\0';i++)
{
if(a[i]==b[0])
{
j=i+1;
k=1;
while(a[j]==b[k]&&a[j]!='\0'&&b[k]!='\0')
{
j++;
k++;
}
if(b[k]=='\0')
{
return i;
}
}
}
for
循环中有关于内部处理的内容吗?我相信他们两人的工作方式是一样的。任何帮助都将不胜感激。
答案 0 :(得分:0)
这些代码块不会做同样的事情。在第一个中,如果不满足任一条件,则for循环将停止迭代。在第二个块中,如果不满足第一个条件,则for循环将停止迭代,而如果不满足第二个条件,则不执行内部代码,但for循环将继续。
至于&& operator ....它将评估IN ORDER中的所有条件,一旦它到达一个评估为false的单个组件,它将停止并评估为false。如果它没有遇到任何错误的情况,那么它将评估为真。
答案 1 :(得分:0)
在第一个代码段中,您的for
循环有两个条件。记得当其中一个不正确时,循环将立即终止。
在第二个代码中,您在for
循环中只有一个条件。第二个条件是if
案例。因此if
condition2错误导致if
案例无法执行,但for
循环仍会继续。