LeetCode做题笔记(3)——if嵌套if时不加花括号{}导致的bug
本篇文章基于LeetCode 题目#485总结,主要是记录了if嵌套if时不加花括号引起的bug
485. 最大连续1的个数
题目类型
数组
做题总结
- 关于if语句与花括号的省略:如下的遍历写法是比较简洁的:
这里省略了for循环的花括号,因为其内部只有一条语句,if没加花括号也是同样的原理。但是以下代码就有问题了:for( i = 0; i < n; ++i ) if( nums[i] == 0 ) ++m;
在这里,for( i = 0; i < numsSize; ++i ) { if( nums[i] == 1 ) if( ++n > max ) max = n; else n = 0; }
if( nums[i] == 1 )
没有加花括号,但由于else
与最近的if
对应,导致其对应的else
被内部嵌套的if( ++n > max )
所占有,最终导致程序运行结果不正确。 - 基于以上分析,得出结论:if中如果嵌套有子if语句,并且后面有else时,必须加花括号!