else与if的匹配方式:
if(表达式1)
if(表达式2)语句1
else 语句2
else
if(表达式3)语句3
else 语句4
else与最靠近它的,没有与别的else匹配过的if匹配
所以,我们不能靠对齐的方式来进行判断
例如:
if(表达式1)
if(表达式2)语句1
else
if(表达式3)语句3
else 语句4
你是不是以为是第一个if和第三个else配对了?
实际上格式化后是这样的:
ps:我这里所说的格式化是指编译器会自动将这个代码整理,目的仅仅是增强可读性;
if(表达式1)
if(表达式2)语句1
else
if(表达式3)语句3
else 语句4
那么我们如何改变这种配对方式呢,这就要说道:
改变if与else配对方式的2种方法:
例题:如何将else与第一个if配对?
if (x < 2)
if (x < 1) y = x + 1;
else y = x + 2;
方法一:加大括号
if (x < 2)
{
if (x < 1) y = x + 1;
}
else y = x + 2;
方法二:加else但语句为空
if (x < 2)
if (x < 1) y = x + 1;
else;
else y = x + 2;
两种方法推荐使用第一种。
建议:if-else语句即使写的不是复合语句也建议给if打上花括号,这样一来可以增强程序的可读性和逻辑性。
最后想要提醒大家一点在C语言笔试题上可能会有不打花括号的if-else的配对情况,这种并不是书有问题,而是题目故意不打花括号来考察我们的if-else的配对。
有什么不足的地方欢迎各位大佬指正
操作系统:Windows10
软件:Devc++
编译器:TDM-GCC 4.9.2 64-bit Release