#include<bits/stdc++.h>
using namespace std;
int l,skip;
bool v;
int ans1,ans2;
string s;
int main()
{
ios::sync_with_stdio(false);
cin>>s;
l=s.size();
for(int i=0;i<l;i++)
{
if(skip)
{
if(s[i]=='(')
{
int x=1;
while(x)
{
i++;
if(s[i]=='(') x++;
if(s[i]==')') x--;
}
}
if(skip==1&&s[i]=='&')
{
//skip=0;
ans1++;
}
if(skip==114514&&s[i]=='|')
{
/*skip=0;*/ans2++;
}
if(s[i]==')')
{
skip=0;
}
if(s[i]=='|'&&skip==1) skip=0;
}
else
{
if(s[i]=='0') v=0;
if(s[i]=='1') v=1;
if(s[i]=='&'&&v==0) {
skip=1;
ans1++;
}
if(s[i]=='|'&&v==1){
skip=114514;
ans2++;
}
}
}
cout<<v<<endl<<ans1<<" "<<ans2<<endl;
return 0;
}
这个是70分代码,如果把if(skip)里面的if改成else if就AC了。请问一下这是为什么呢?这里前面的if成立后面的if不就一定不成立了吗,为什么要用else if来跳过判断呢?