没加{}的
if (a < b)
if (b < 0)
c = 0;
else
c++;
这样会让人产生迷惑,以为else是与第一个if配对,其实在嵌套使用if语句时,C语言规定else总是与和之前与其最近的且不带else的if配对.所以其实else是与第二个if配对.
等价于
if (a < b) {
if (b < 0) {
c = 0;
} else {
c++;
}
}
总结
为了避免这种逻辑混淆的情况,最好在使用嵌套的 if-else 结构时,使用大括号明确指定代码块的范围,以确保逻辑关系清晰。