这里你需要了解缓冲区,这种属于缓冲输入
例如你输入4 * 5 = ,这都会存放在缓冲区里直到遇到空白字符,缓冲区满或者遇到需要输入的时候才会刷新缓冲区!
因为第一个scanf 并不是直接你输入就读取的,它是从缓冲区读取数据的。
第一个scanf 是要读取%d %c ,然后因为遇到了第二个scanf 需要输入,所以缓冲区被刷新了,第一个scanf 读到了4和*这两个
接着第二个scanf 读取了5和 =,因为你是输入了
4 * 5 = <回车>
此时缓冲区遇到换行符再一次刷新
虽然你输入的是一次,但是做了两次刷新缓冲区刷新的处理,4 * (遇到第二次scanf刷新了缓冲区)
5 = (按下了回车键换行符刷新了缓冲区)
此时计算出应得的结果,再将op1初始化成=,然后结束while 循环打印结果