c中for循环的多个条件

时间:2016-04-12 17:47:32

标签: c string for-loop substring

我正在尝试在字符串中查找子字符串。在执行此操作时,我了解如果我们编写

,请检查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循环中有关于内部处理的内容吗?我相信他们两人的工作方式是一样的。任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

这些代码块不会做同样的事情。在第一个中,如果不满足任一条件,则for循环将停止迭代。在第二个块中,如果不满足第一个条件,则for循环将停止迭代,而如果不满足第二个条件,则不执行内部代码,但for循环将继续。

至于&& operator ....它将评估IN ORDER中的所有条件,一旦它到达一个评估为false的单个组件,它将停止并评估为false。如果它没有遇到任何错误的情况,那么它将评估为真。

答案 1 :(得分:0)

第一个代码段中,您的for循环有两个条件。记得当其中一个不正确时,循环将立即终止。

第二个代码中,您在for循环中只有一个条件。第二个条件是if案例。因此if condition2错误导致if案例无法执行,但for循环仍会继续。