当一个语句拦住了else与if的相认步伐时(C语言小白的理解)

中国大学MOOC上浙江大学翁恺老师的程序设计入门——C语言第一次单元测验中有这样一道题:
在这里插入图片描述

#include<stdio.h>

int main()
{
	int i=6;
	if(i<=6)
	printf("hello\n");;
	else
	printf("bye-bye\n");;
	
	return 0;
}

编译后结果如下:
在这里插入图片描述
即else未能找到配对的if

else与if何时才能对应?一般说法是:else 总是与其前面最近的尚未配对的if配对、else总是与尽可能近的if配对(就近原则)。
对于该就近原则,在本题中,由于if后面没有写大括号,故而之后的一句话是if之内的,即第一个分号之前的话是满足if条件则进行的。而printf语句后面的空语句无论如何都会执行,由此,else就会和if分开,找不到最近的if,于是不能编译。

之后又问了问我班大佬,大佬的意见是:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值