我是C ++的初学者,我正在做这个示例的赋值运算符代码。我不知道我在这里做错了什么。
import maya.OpenMaya as om
sel = om.MSelectionList()
om.MGlobal.getActiveSelectionList(sel)
dag = om.MDagPath()
comp = om.MObject()
sel.getDagPath(0, dag, comp)
itr = om.MItMeshFaceVertex(dag, comp)
print '| %-15s| %-15s| %-15s' % ('Face ID', 'Object VertID', 'Face-relative VertId')
while not itr.isDone():
print '| %-15s| %-15s| %-15s' % (itr.faceId(), itr.vertId(), itr.faceVertId())
itr.next()
我正在获得
的结果#include <iostream>
using namespace std;
int main()
{
int x = 200; int y = 100;
x += y; cout << x << endl; //x += y; // x = x + y, x = 200 + 100, output 300.
x -= y; cout << x << endl; //x -= y; // x = x - y, x = 200 - 100, output 100.
x /= y; cout << x << endl; //x /= y; // x = x / y, x = 200 / 100, output 2.
x %= y; cout << x << endl; //x % y; // x = % y, x = 200 % 100, output 0.
return 0;
}
当它假设是
时x -= y = 200
x /= y = 2
x %= y = 2
它实际上将以前的结果加起来。如何阻止代码将结果添加到下一行?谢谢!
答案 0 :(得分:3)
当x
和y
是变量而U
是一个操作x U= y
相当于:
x = x U y;
表示正在修改原始变量并为其分配结果。
您的代码相当于:
x = x + y;
cout << x << endl; // x is now 300
x = x - y;
cout << x << endl; // x is now 200
x = x / y;
cout << x << endl; // x is now 2
x = x % y;
cout << x << endl; // x is now 2
如果您不想更改x
,您可以将x
保存在临时变量中,或者只打印结果:
int x = 200;
int y = 100;
cout << x - y << endl; // x unchanged
cout << x + y << endl; // x unchanged
cout << x / y << endl; // x unchanged
cout << x * y << endl; // x unchanged
或者:
int x = 200;
int x = 100;
int result = x + y;
cout << result << endl;
result = x - y;
cout << x << endl;
result = x / y;
cout << result << endl;
result = x % y;
cout << result << endl;
注意:由于=
运算符在赋值cout << x += y << end
可以编译并打印指定值后返回值。
答案 1 :(得分:3)
正如您在代码中的评论中所提到的,x += y
的结果相当于x = x + y
,这意味着x
的值会发生变化。因此,x
,300的新值在下一个数学作业中使用也就不足为奇了。
如果您想避免这种情况,请考虑将x + y
的结果保存到另一个变量。
int x = 200;
int y = 100;
int x_addition = x + y;
std::cout << x_addition << std::endl;
或者,如果它的唯一用途是显示添加的结果,请在一行中完成。
int x = 200;
int y = 100;
std::cout << x + y << std::endl;
答案 2 :(得分:2)
每次执行x += y;
之类的作业时,都会更改x的值。
x += y;
相当于
x = x + y;
这意味着分配。 x的值正在变化。它现在是300.同样的事情也发生在后来的任务中。
注意:如果你不想改变x和y的值,最好在其他变量中进行赋值。
int x = 200, y = 100, t;
t = x + y; cout << t << endl;
t = x - y; cout << t << endl;
t = x * y; cout << t << endl;
t = (int) x / y; cout << t << endl;
答案 3 :(得分:1)
尝试在每次分配后将x重置为200。像这样:
#include <iostream>
using namespace std;
int main()
{
int x = 200; int y = 100;
x += y; cout << x << endl;
x = 200;
x /= y; cout << x << endl;
x = 200;
x %= y; cout << x << endl;
return 0;
}
答案 4 :(得分:1)
您希望永久保留<table>
<tr><th>Test Columns</th><th>Header 2</th></tr>
<tr><td>Test Value</td><td>Test 2</td></tr>
</table>
和x
的原始值,但它不是。 y
或x += y;
等分配会更改变量的值(在本例中为x = x + y;
,即等号左侧的变量)。之前的值会被覆盖,因此会丢失。
如果您不想更改原始值,则必须将结果分配给其他变量(例如,一个名为x
的变量,每次都可以覆盖),或者您不要#39; t完全分配它,你只需将temp
发送给计算结果。
作为临时变量的示例:
cout
或者,完全废除变量:
int x = 200; int y = 100; int temp;
temp = x + y; cout << temp << endl; //temp = x + y, temp = 200 + 100, output 300.
temp = x - y; cout << temp << endl; //temp = x - y, temp = 200 - 100, output 100.
另一种看待变量被覆盖的方法(好吧,在这种情况下它只是cout << x + y << endl; // 200 + 100, output 300
cout << x - y << endl; // 200 - 100, output 100
)是将它们声明为x
:
const
程序不会编译,因为它试图改变常量变量。
答案 5 :(得分:1)
您正在使用累积运算符,因此您需要更改&#39; x&#39;。
的值。x += y; // x = 200 + 100 = 300
x -= y; // x = 300 - 100 = 200
x /= y; // x = 200 / 100 = 2
x %= y; // x = 2 % 100 = 2
相反,你可以这样做:
int x = 200;
int y = 100;
cout << x + y << endl;
cout << x - y << endl;
cout << x / y << endl;
cout << x % y << endl;
或者:
int x = 200;
int y = 100;
int result;
result = x + y;
cout << result << endl;
result = x - y;
cout << result << endl;
result = x / y;
cout << result << endl;
result = x % y;
cout << result << endl;
答案 6 :(得分:0)
您不依赖于加法运算值
x=200,y=100;
x+=y;//x=200+100=300,x=300,y=100
x-=y;//x=300-100=200,x=200,y=100
这里你忘记了扣除之前有 ADDITION 操作