【问题标题】:Meaning of single + prefix in incrementation增量中单个 + 前缀的含义
【发布时间】:2019-06-11 18:51:35
【问题描述】:

我下载了一个提供整数值递增 5 的代码,如下所示:

int i =0;
i = +i +5;

我通常使用:

i+=5;

这两种形式有什么区别吗?单前缀加有特殊含义吗?

【问题讨论】:

标签: c# operators


【解决方案1】:

如果你问i = +i +5;i = i + 5;有什么区别,不,没有。

+55 相同,是-5 的“相反”。 + 符号在这里只是为了保持一致性(能够使用减号而不是加号来签署数字会很“奇怪”)。

【讨论】:

  • 换句话说,- 和 + 可以作为一元和二元运算符,就像在数学中一样,+ 是隐含的:)
【解决方案2】:

在大多数情况下 我=+我+5; /i=i+5 相当于 i = i +5;

但在 i+=5 中,i 只被评估一次(参见+= operator)。在volatile变量的情况下可能会生效,因为有副作用。

【讨论】:

  • 能分享一下你遇到问题的项目吗?
  • 没有问题,只是一个问题。
  • 我认为(如果我错了,请纠正我)"...evaluate once..." 仅在 generic 中有意义+= 运算符的描述。对于int 类型(如示例),生成完全 相同的代码(1 次读取、添加、1 次写入)。
  • 我认为,如果 x 是一些特殊变量,可以间接评估或在少数线程之间共享,它可能会以某种模棱两可的方式进行更改。但是,如果变量以间接方式改变,它应该是易变的。引用:“volatile 关键字表示一个字段可能会被同时执行的多个线程修改。编译器、运行时系统甚至硬件可能出于性能原因重新安排对内存位置的读取和写入。”
猜你喜欢
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 2012-10-03
  • 2014-08-11
  • 2011-03-12
  • 2014-04-30
  • 1970-01-01
相关资源
最近更新 更多