请问这里的cin >> c;有与没有为什么结果差1?还有这里的inline有什么实际意义呢?

#include "pch.h"
#include
#include
using namespace std;
inline int isnumber(char);
int main()
{
char c;
int n;
n = 0;
cin >> c;
while ((c = getchar()) != '\n')
{
if (isnumber(c))
n++;
}
cout << "n=" << n << endl;

}
int isnumber(char ch)
{
return(ch >= '0'&&ch <= '9') ? 1 : 0;
}

while循环里面的getchar()会接收一次输入
cin >> c;//这行代码也会接收一次输入
举个例子:
如果cin >> c;这行代码不执行,你输入1然后回车,等于while循环接受两次输入,判断两次,只满足一次条件所以只执行一次循环体,n=1,第二次循环之前判断输入回车退出循环。
如果cin >> c;这行代码执行,你输入1然后回车,等同于cin >> c;执行了1的输入,getchar()会接收换行的输入,这样while循环判断c的值就是你换行的输入值,即c='\n',是不会执行循环体的,n=0;

故cin >> c;这行代码执行与否影响n的结果,刚好差1

这里的inline没有实际意义。inline只会在函数定义时声明才有效。