所以我的朋友给了我一些源代码,所以我可以复习并理解它,我有一个问题,但是因为他不在线我想我会在这里试试,主要是我不太明白这个线。
num += i;
基本上,这与
相同num = num + i
正确?
如果您需要更多详情,请告诉我!我期待很快收到您的回复。
答案 0 :(得分:11)
来自ISO C ++ 03(第5.17 / 7节)
The behavior of an expression of the form E1 op= E2 is equivalent to E1 = E1 op E2 except that E1 is evaluated only once.
答案 1 :(得分:3)
是。它完全相同(假设您正在讨论内置的+=
)。实际上,这就是语言规范中定义+=
的方式。
你最喜欢的C ++书不是涵盖这个主题吗?
答案 2 :(得分:3)
基本上是的,但效率更高。对于基本类型(如整数),使用num += i
直接递增num
的值,而num = num + i
创建值为num
的临时值,递增它,然后赋值回到num
。
答案 3 :(得分:0)
之前发布的真实情况取决于语言。如果假设C ++,并且该num是一个整数,那么就像其他人发布的那样
num += i;
相当于
num = num + i;
但在c ++ / c#中确定行为真的取决于类。实际上,您将在num对象上调用i对象类型的“+ =”运算符。在良好的设计中,这应该与首先执行“+”运算符相同,然后以上述方式执行=运算符。但它不一定是:
class foo
{
bool operator += (int i) {return false;}
}
foo num;
int i;
bool result = num += i;
在该示例中,num将保持不变,结果将为false。