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 (将#修改为@)