御笔剑客 发表于 2017-11-28 22:59:34

关于这段代码的if else问题

#include<stdio.h>
#include<string.h>
int main()
{
    char a,b,i,n,l=2;
    gets(a);gets(b);
    n=strlen(a);
    if(strlen(b)!=n)l=1;
    else
    {
    for(i=0;i<n;i++)
    if(a==b||a==b+32||a+32==b)
      if(a!=b)l=3;
      else ;else {l=4;break;}
    }
printf("%d",l);
return 0;
}

if(a==b||a==b+32||a+32==b)
      if(a!=b)l=3;
      else ;else {l=4;break;}
这段代码中的那个if else是怎么配对的呢?

BngThea 发表于 2017-11-29 07:59:36

没有括号的情况下,else遵循就近配对,也就是和他最近的还没有配对的if进行配对

好多好多鱼 发表于 2017-11-30 00:08:27

if(a==b||a==b+32||a+32==b)
      if(a!=b)l=3;
      else ;else {l=4;break;}
就近匹配 。
else; 对应if(a!=b)l=3;
else {l=4;break;}对应 if(a==b||a==b+32||a+32==b)
页: [1]
查看完整版本: 关于这段代码的if else问题