C语言分支结构if语句

img
为什么会出错,是if语句用错了吗?我查了一下,有篇文章说:if…if…if…else,最会一定会执行else。是这样吗?还是哪里出了问题了?

有两个错误:
1.!=的优先级高于=,所以程序先计算getchar() != '#'的值为1,然后把1赋给ch。
2.应该用else if.

前两个if一定会执行 最后一个if看判断条件

img
这个是if多分支结构if……else if语句
if() 如果
{}
else if() 否则如果
{}
……可以有很多个else if
else 否则
{}

一个if对应一个else,但是else if可以无限多。

主要是if条件的问题,应该是if((ch=getchar()) != '#')
你这段代码是否用if或者else if会有影响,主要是最后一个else。不为空格就会执行else ,这样输入一个字母的话,字母数量会加1,然后其它字符数量也会加1,就重复了。而且用if...else if运行效率会更好一些,代码逻辑也更清楚一些。