LeetCode做题笔记(3)——if嵌套if时不加花括号{}导致的bug

本篇文章基于LeetCode 题目#485总结,主要是记录了if嵌套if时不加花括号引起的bug

485. 最大连续1的个数

题目类型

数组

做题总结

  • 关于if语句与花括号的省略:如下的遍历写法是比较简洁的:
    for( i = 0; i < n; ++i )
      if( nums[i] == 0 )
          ++m;
    这里省略了for循环的花括号,因为其内部只有一条语句,if没加花括号也是同样的原理。但是以下代码就有问题了:
    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时,必须加花括号!
posted @ 2020-04-20 19:19  凉风SK  阅读(903)  评论(0编辑  收藏  举报