分支语句If语句

本文详细解释了C语言中if语句的基本用法、多条语句控制、if-else结构以及else悬空问题,包括嵌套判断和配对规则,帮助初学者避免常见误区。
摘要由CSDN通过智能技术生成

if语句

if(表达式)
	语句;

判断表示式是否为真(非0),为真则执行if内的语句,为假(为0)则不执行。

if中包含多条语句

在if后面没有加花括号时,只能控制后面一条语句,以分号结尾。
比如:为了防止孩子早恋,我们限定他们只有成年(18岁)后才能谈恋爱

int a;
scanf("%d",&a);//比如这个输入a为10;
if(a>=18)
	printf("我成年了");//不会被输出
	printf("我可以谈恋爱了");//这条语句会被输出,

当输入的值为10时,按理来说两条语句都不会被输出,但结果却是第二条语句被输出,第一条没有被输出。这是为什么呢?
因为if如果想要控制多条语句,就必须要在if后面加上大括号

int a;
scanf("%d",&a);//输入10
if(a>=18)
{
	printf("我成年了");
	printf("我可以谈恋爱了");//两条语句都不会被输出
}

if与else

当if后面的表达式为假时,则执行else中的语句

int a;
scanf("%d",&a);//如果a输入的不是1,则执行else语句,因为if后面表达式的判断结果为假
if(a=1)
{
	printf("这是1");
}
else 
{
	printf("这是2");
}

if的嵌套

if…else中,else可以与另一个if连用,构成多重判断。

int a;
scanf("%d",&a);
if(a==1)
{
	printf("1");
}
else  if(a==2)
{
	printf("2");
}else{
	printf("3");	
}

else 后面的if就相当于在else里嵌套了一个if,从if到后面的else部分,都是嵌套在前面的else里面的。

if里面嵌套if:

int a;
scanf("%d",&a);
if(a>0)
{
	if(a%2==0)
	{
		printf("正偶数");
	}else{
		printf("正奇数");
	}
}

第一层的if判断输入的值是否为正数,为真则进入语句再次判断是否为偶数,为真则输出,“正偶数”,为假,则输出"正奇数"。

关于else悬空的问题

上例子:

int a=0,b=1;
if(a==1)
	if(b==2)
		printf("6");
else
	printf("7");

这段代码最后的输出结果是什么?有没有朋友认为最后输出是7的?但其实他最后啥也不输出。
很多初学者看到这段代码一眼便把else与第一个if进行配对了,但其实不是这样的,else的配对原则:与就近的没有配对的if进行配对。也就是说,else是与第二个if配对的。

如果你想输出else语句中的内容,可以改成如下这样:

int a=0,b=1;
if(a==1){
	if(b==2)
		printf("6");
		}
else{
	printf("7");
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值