微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++ IO 运算符中的左结合性和优先级

如何解决C++ IO 运算符中的左结合性和优先级

嗨,我想了解如何在 C++ 中计算表达式。我有一些疑问。写的是

用于 IO 的运算符是左关联的。

现在给出两个例子:

示例 1. cin>> v1 >> c2;

示例 2. int i=0; cout<<i<< " "<< ++i <<endl;

说明在第一个例子中,我们首先读入 v1,然后读入 v2(我可以理解从左到右)。现在在第二个例子的解释部分,写到第二个例子的输出表达式是undefined

我的问题是:

问题 1. 为什么第二个示例的输出表达式未定义?

问题 2. >> 不是 IO 操作符吗?如果是 IO 运算符,为什么不遵循左关联规则。

还有一个例子如下:

示例 3. int k = f1() * f2();

在例 3 的情况下是这样写的

我们无从得知 f1 是否会在 f2 之前被调用,反之亦然

问题 3. 现在我的第三个问题是我们知道算术运算符也是左结合的,那为什么我们不从左到右。我的意思是先计算 f1(),然后计算 f2(),最后将它们相乘。

PS:我知道 f1() 和 f2() 具有相同的优先级。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。