if 与 if else

//version 1

while (cin.get(ch))

{

  if (ch == ' ')

    spaces++;

  if (ch == ' ')

    newlines++;

}

//version 2

while (cin.get(ch))

{

  if (ch == ' ')

    spaces++;

  else if (ch == ' ')

    newlines++;

}

对于上面的这两种写法,所得的结果是一样的,但是两者的执行效率却不一样。

对于第一个版本,如果你输入的字符是空格,第一个if已经判断出了这个字符是空格,所以执行spaces++,但是下一个if还会再次判断这个字符,看它是不是换行符。

第二个版本则是,如果if已经判断出了你输入的字符是空格,else if就不再判断,之间回到循环处。所以第二个版本执行效率会更高。

但是如果你输入的不是空格,那两者的执行效率就一样了。

所以还是建议如果碰到连续判断的还是用if else 会更好一点。

原文地址:https://www.cnblogs.com/KingKO/p/5988341.html