Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 增量/减量与加法/减法赋值运算符?_Objective C_Operators - Fatal编程技术网

Objective c 增量/减量与加法/减法赋值运算符?

Objective c 增量/减量与加法/减法赋值运算符?,objective-c,operators,Objective C,Operators,免责声明:我是一个相当新的编程人员,所以这个问题可能很愚蠢 过去,每当我想增加或减少一个整数时,我都会使用integer++或integer--。然而,在阅读了更多编程书籍之后,我发现了操作符+=和-=(经过进一步研究,我发现它们被称为加法和减法赋值操作符) 显然,赋值运算符是最健壮的,因为您可以改变要增加或减少整数的量。我想知道的是:使用integer++与integer+=1相比,有什么优点或缺点?integer++实际上比你想象的要多一些 整数后的“++”首先返回整数的值,然后递增整数:

免责声明:我是一个相当新的编程人员,所以这个问题可能很愚蠢

过去,每当我想增加或减少一个整数时,我都会使用
integer++
integer--
。然而,在阅读了更多编程书籍之后,我发现了操作符
+=
-=
(经过进一步研究,我发现它们被称为加法和减法赋值操作符)


显然,赋值运算符是最健壮的,因为您可以改变要增加或减少整数的量。我想知道的是:使用
integer++
integer+=1
相比,有什么优点或缺点?

integer++实际上比你想象的要多一些

整数后的“++”首先返回整数的值,然后递增整数:

int i = 5;
int a = i++; 
//a is now 5
//i is now 6.
i++;
//i iw now 7
您还可以执行++整数,它首先递增整数,然后返回值

int i = 5;
int a = ++i;
//i and a are now 6.
至于哪家运营商更好?这可以归结为个人偏好。Sven在评论中指出,这两个函数将输出几乎相同的指令


(我所说的一切对--)也都是正确的。

另外,只需添加到这个线程中。。。您还可能发现在某些情况下,使用integer++而不是integer++是有用的(方便的)


请注意,在for循环中使用integer++或++integer不会产生任何影响。

++someInteger
someInteger+=1
完全相同,第一种方法只是编写第二种方法的较短方法。如果你在表达式中使用它,正如Roy T.所指出的,
someInteger++
++someInteger
之间是有区别的


但你真的不应该考虑这个,只要用你觉得更自然的东西。这当然与性能无关。

普通整数类型没有性能差异。对于具有重载运算符的复杂C++对象来说,这是很重要的,因为需要临时副本。在引擎盖下,当编译器不优化它时,I++速度变慢,或者替换为++i(适用时)。a=i++实际上转换为:tmp=i+1;a=i;i=tmp;。当然,这个优化很容易,而且总是在可能的情况下完成,所以你部分是对的:)。有趣的是,我从来不知道++我和我++做了不同的事情,谢谢你的回答!不完全是。在汇编级别上,这是相同的:
a=i++
被转换为类似于
将i加载到r1,将r1存储到a,增量r1,将r1存储到i
a=++i
被转换为
将i加载到r1,增量r1,将r1存储到i,将r1存储到a
(带有寄存器r1和内存位置
i
a
)。唯一的区别是增量和存储的顺序。很好的信息,现在我假设你是对的,但在编程101类时,我被告知a=I++稍微慢一点,因为它涉及创建一个额外的变量,但你的示例更有意义。