cin >> i的返回值类型不是int,是istream类模版特化的一个类。运行这个程序你就可以看到返回值类型是什么了。
#include
#include
#include
using namespace std;
int main()
{
int i;
cout<>i).name()< system("PAUSE");
return 0;
}
在VC++6.0中运行的结果是class std::basic_istream
P.S.如果你不知道typeid是什么,简介一下。typeid获得运行时的类型,typeid(...).name()就是用字符串(char*型)来表示这个类型。
P.S.合理性:cin>>i返回值类型是istream的合理性在于,这样就可以这么写了:cin>>i>>j,因为cin>>i是一个istream,和cin类型是一样的,才可以继续">>j"。
这个问题涉及到"cin>>i"这个表达式返回值的问题。
在编译时报错提示你‘=’操作符重载两端类型不匹配。
说明“cin>>i”这个表达式的返回值不是整形的,不能付给j这个变量。
j=cin>>i;这句改成
cin>>i;
j=i;就没问题
int i;
int j;
j = (cin >> i);
cout << j << endl;
这样试试。
优先级问题 家个括号就好了
j=(cin>>i);
他是二元操作符