问题描述
嗨,我想了解如何在 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 (将#修改为@)