有人能解释一下吗?[C+;+;] < C++ >引物:
下一个声明有人能解释一下吗?[C+;+;] < C++ >引物:,c++,C++,下一个声明 std::cin >> v1 >> v2; 读取输入。输入运算符(»运算符)的行为 类似于输出操作符。它以一个istream作为它的 左侧操作数和对象作为其右侧操作数。上面写着 来自给定istream的数据,并存储在给定istream中读取的内容 对象与输出操作符一样,输入操作符返回其 左操作数作为其结果。因此,这个表达式是等价的 到 我不明白。这两个表达式如何等价?也许很简单。但是我不明白。操作符>只有2个操作数和返回值,所以当您写入:std::cin>
std::cin >> v1 >> v2;
读取输入。输入运算符(»运算符)的行为
类似于输出操作符。它以一个istream作为它的
左侧操作数和对象作为其右侧操作数。上面写着
来自给定istream的数据,并存储在给定istream中读取的内容
对象与输出操作符一样,输入操作符返回其
左操作数作为其结果。因此,这个表达式是等价的
到
我不明白。这两个表达式如何等价?也许很简单。但是我不明白。
操作符>
只有2个操作数和返回值,所以当您写入:std::cin>>v1>>v2
时,它意味着:
result = std::cin >> v1
result >> v2
这里还有另一个例子:a+b+c
result = a + b
result + c
std::cin>>v1
是一个表达式,它将导致数据读入v1
,并将计算为std::cin
。也许这样有助于将其形象化:
(std::cin >> v1) >> v2;
//reads into v1 and evaluates to
(std::cin) >> v2;
//equivalent to
std::cin >> v2;
你可以把第一种变体看作是第二种变体的缩写。类似于a+b+c是真的(a+b)+c,意思是先加上a和b,取其结果并加上c。因此,在这里,std::cin>>v1返回一个流,我们获取该流并使用v2操作结果流。您可以选择使用() 你试过运行它吗?
a+b+c
相当于(a+b)+c
。“神奇”是操作符>>返回它的第一个操作数,stream.Legrojan,不。我读了一整节,然后通过运行那个东西来检查东西,然后再制作东西。我还没试过这个。我相信这是真的。它将毫无错误地运行。但这并不意味着我已经完全理解了这个概念在前一节“向流写入”中有更详细的讨论。如果你明白了,你必须明白这一点。我会修改这个话题。感谢您告诉我,我可能还没有完全理解某些内容,我认为加法示例可能有点混乱,因为a+b
不返回a
,因此它不是完全类似的。嗯,操作符>>不必返回相同的流-这取决于您如何重载它:)好的观点。我没有想到这是可能的。我很好奇,你知道这样做有什么实际用途吗?我用的是运算符
(std::cin >> v1) >> v2;
//reads into v1 and evaluates to
(std::cin) >> v2;
//equivalent to
std::cin >> v2;