
两个问题,1.这里while (cin>>x>>y)是什么意思?这不是布尔类型吧
2.下方的(x+y)为什么要带括号,我试了一下不带括号就无法正确执行
请教大家。

以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
关于您提出的两个问题,我将逐一进行解释:
while (cin >> x >> y) 的含义和用法在 C++ 中,cin 是标准输入流对象,>> 是输入操作符。当您使用 cin >> x >> y,它尝试从标准输入(通常是键盘)读取两个值,并将它们分别赋给变量 x 和 y。
while (cin >> x >> y) 这个表达式实际上是一个布尔表达式。在 C++ 中,输入操作符 >> 在成功读取数据时返回 cin 本身,而在读取失败时返回一个失败的输入流。失败的输入流在布尔上下文中被视为 false,而成功的输入流被视为 true。因此,while (cin >> x >> y) 循环会一直执行,直到无法从标准输入读取两个值为止。
(x + y) 需要使用括号在 C++ 中,输入操作符 >> 的优先级高于加法操作符 +。这意味着如果不使用括号,表达式 x + y >> y 会被解释为 (x + y) >> y,这显然不是您想要的。使用括号 (x + y) 可以明确指定 x 和 y 先进行加法运算,然后再将结果赋给 x。
如果不使用括号,代码将无法正确执行,因为 y 将被赋值两次:首先 y 被读取并赋值给 y,然后 y 再次被赋值给 x,这会导致 y 的最终值丢失,并且 x 将包含错误的值。
假设您想要读取两个整数,并将它们的和输出到标准输出,正确的代码应该是这样的:
#include <iostream>
int main() {
int x, y;
while (std::cin >> x >> y) {
std::cout << (x + y) << std::endl;
}
return 0;
}
请注意,我添加了 std:: 前缀,这是 C++ 中命名空间的标准用法。
这些链接提供了有关 C++ 输入输出和运算符优先级的更多详细信息。希望这能帮助您解决入门时遇到的问题!