c++为什么不能用while(cin>>(。。。)!=EOF)来实现一次运行多次数据的输入?

c语言中用while(scanf(。。。)!=EOF)来实现一次运行的多次输入。 c++为什么不能用while(cin>>(。。。)!=EOF)来实现? 改怎么改? 如下程序为什么不行?

#include
using namespace std;
#define pi 3.1415926
const double PI=3.14;
int main()
{ system("color 4A");
double s1,s2,r;
while((cin>>r)!=EOF)
{

        s1=PI*r*r;
        s2=pi*r*r;
        cout<<"s1="<<s1<<endl;
        cout<<"s2="<<s2<<endl;

}

system("pause");

}

改成while(cin>>r)

这样做的操作结果是比较 cin != EOF, 请问你知道这是什么意思吗? 若要改就把cin拿出来,cin>>i返回值类型是istream的目的是可以写成:cin>>i>>j,因为cin>>i是一个istream,和cin类型是一样的,才可以继续">>j"。

EOF是一个宏,值是-1,cin不是函数,没有返回值,也就没办法去比较了

其实while(cin>>r)就ok啊,如果你还要判断r是否为0,就只需while(cin>>r,r),截止是ctrl+z