【发布时间】:2017-01-02 18:24:38
【问题描述】:
据我了解,C++ 是从左到右工作的。例如,如果我这样做:
std::cout << "output" << "stream";
C++ 首先从最左边的东西(std::cout)开始,接下来是
“=”运算符返回什么?
如果我这样做
double wage = 5;
double salary = wage = 9999.99;
我认为“=”运算符只会返回“=”的左操作数或右操作数。所以,按照我的逻辑,在薪水初始化行中,薪水用工资的值初始化,然后“=”运算符返回薪水或工资(比方说薪水),然后将 9999.99 分配给薪水,但工资是消失了,它应该保持 5 的值。
但是当我在“salary”初始化后检查“salary”和“wage”的值时,两者的值都是9999.99。如果我应用与上述 std::cout 相同的逻辑,则应该只有一个变量,“salary”或“wage”,其值为 9999.99
【问题讨论】:
-
“C++ 从左到右工作” 这取决于操作员。
=特别是右结合;它从右到左工作。 -
@Igor:
double salary = wage = 9999.99;中只有一个赋值运算符,因此关联性甚至无关紧要。
标签: c++