下面几个程序:
程序1:
#include<stdio.h>
int main(void)
{
int a=0;
if(a>=0)
if(a>0)printf(“the 1 call”);
else printf(“the 2 call”);
getchar();
}
程序2:
#include<stdio.h>
int main(void)
{
int a=2;
if(a>=0)
if(a>0)printf(“the 1 call”);
else printf(“the 2 call”);
getchar();
}
程序3:
#include<stdio.h>
int main(void)
{
int a=0;
if(a>=0)
{if(a>0)printf(“the 1 call”);
else printf(“the 2 call”); }
getchar();
}
程序4:
#include<stdio.h>
int main(void)
{
int a=2;
if(a>=0);
{if(a>0)printf(“the 1 call”); } //编译不通过,expected primary-expression before “else” 。
else printf(“the 2 call”);
getchar();
}
程序5:
#include<stdio.h>
int main(void)
{
int a=2;
if(a<0);
if(a>0)printf(“the 1 call”);
else printf(“the 2 call”);
getchar();
}
总结:
1.if与else一般是就近原则。栈的原理。
2.为了避免这种情况,一般要求if else后面强制加{};