if 与 if else
//version 1
while (cin.get(ch))
{
if (ch == ' ')
spaces++;
if (ch == '\n')
newlines++;
}
//version 2
while (cin.get(ch))
{
if (ch == ' ')
spaces++;
else if (ch == '\n')
newlines++;
}
对于上面的这两种写法,所得的结果是一样的,但是两者的执行效率却不一样。
对于第一个版本,如果你输入的字符是空格,第一个if已经判断出了这个字符是空格,所以执行spaces++,但是下一个if还会再次判断这个字符,看它是不是换行符。
第二个版本则是,如果if已经判断出了你输入的字符是空格,else if就不再判断,之间回到循环处。所以第二个版本执行效率会更高。
但是如果你输入的不是空格,那两者的执行效率就一样了。
所以还是建议如果碰到连续判断的还是用if else 会更好一点。