【问题标题】:Difference between the execution of a+=2 and a=a+2?a+=2 和 a=a+2 的执行有什么区别?
【发布时间】:2017-10-30 16:01:31
【问题描述】:
void increment(int a)
{
    a+=2
}

void assign(int a)
{
    a=a+2
}

在哪种参数传递技术中,对 increment(b) 的调用会产生不同的效果 来自对assign(b)的调用

1) 按值调用 2) 按值调用结果 3) 通过引用调用 4) 叫名字

【问题讨论】:

  • 您使用的是什么语言/工具?
  • 我没有使用任何东西,这只是我遇到的一个问题,我很想知道表达式 a+=2 和 a=a+2 的执行是否会产生真正的影响?
  • 如果它成功了,那么在使用哪种类型的调用之后会有所不同?
  • 这些函数都不做任何事情(假设 c / c++ 类型语言)

标签: callbyname call-by-value


【解决方案1】:

第一个是一个操作,即将值 a+2 存储在 a (+=) 中 第二个是两个操作,即计算值a+2(+)并赋值给a(=)

尽管这些是如何实现的,但它非常依赖于语言。

【讨论】:

  • 好的,你能说在以下哪种参数传递技术中,对 increment(b) 的调用将与对 assign(b) 的调用产生不同的效果,为什么? 1)按值调用 2)按值调用结果 3)按引用调用 4)按名称调用
  • 无论如何,最终的结果都是一样的。在某些情况下,其中之一 (+=) 可能更理想
【解决方案2】:

在大多数情况下(假设 x += y 等价于 x = x + y),没有区别。此外,在大多数语言中,这两个函数都不会影响传递给它的值,因此它们什么都不做。

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多