C++ Multi-Assign Python功能

abo*_*u00 1 c++ syntax

我正在努力学习C++.在进行实验时,我输入以下代码,不要指望它能够工作,但希望它会:

int one = 1, two = 2;
one, two = two, one;

cout << "one = " << one << "\n";
cout << "two = " << two << "\n";
Run Code Online (Sandbox Code Playgroud)

令我感到鼓舞的是,编译器没有抱怨,因为这是我喜欢python的主要特性之一,我所学过的大多数编程语言都不匹配 - 在分配之前评估多个表达式的能力结果没有使用临时变量.但是,当我运行它时,我发现这段代码似乎无效.

玩了一下之后,我发现变量two实际上已经设置了 - 所以,如果我运行这段代码:

one, two = 3, 4;
Run Code Online (Sandbox Code Playgroud)

two将等于3,但one不会改变.所以我的问题是,编译器在这个语句中究竟做了什么?我无法为我的生活弄明白.

谢谢,布兰登

EdC*_*ica 5

C++不支持多赋值python样式,逗号运算符不能执行您的操作:http://en.wikipedia.org/wiki/Comma_o​​perator

如果您为两者分配相同的值one,two那么您可以这样做

one = two = 3;
Run Code Online (Sandbox Code Playgroud)

但在你的情况下你并非如此,他们必须分开:

one = 3;
two = 4;
Run Code Online (Sandbox Code Playgroud)

如果要交换值,则必须使用临时第三个变量:

int temp = one;
one = two;
two = temp;
Run Code Online (Sandbox Code Playgroud)

如果我们考虑以下因素:

one, two = 3, 4;
Run Code Online (Sandbox Code Playgroud)

简单的情况是3 ,4;这里4将被丢弃所以只剩下3个,你就可以了

one, two = 3;
Run Code Online (Sandbox Code Playgroud)

现在你有一个赋值运算符=,它的优先级高于,运算符,所以不管在得到之前首先计算one, twotwo = 3;是什么one, two:

two = 3;
Run Code Online (Sandbox Code Playgroud)