递增/递减与加法/减法赋值运算符?

Kev*_*Yap 11 objective-c operators

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

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

显然,赋值运算符最强大,因为您可以改变想要增加或减少整数的数量.我想知道的是:使用integer++vs. 有什么好处或坏处integer += 1

Roy*_* T. 17

整数++实际上比你想象的要多一点.

在整数之后的'++'首先返回整数的值,然后递增整数:

int i = 5;
int a = i++; 
//a is now 5
//i is now 6.
i++;
//i iw now 7
Run Code Online (Sandbox Code Playgroud)

你也可以做++整数,它首先递增整数,然后返回值.

int i = 5;
int a = ++i;
//i and a are now 6.
Run Code Online (Sandbox Code Playgroud)

至于哪个运营商更好?这取决于个人喜好.Sven在评论中指出两个函数都会输出几乎相同的指令.

(我说的一切也是如此 - )

  • 不完全是.在程序集级别上,这是相同的:`a = i ++`被转换为`load i to r1,将r1存储到a,增加r1,将r1存储到i`和`a = ++ i`被转换为`将i加载到r1,递增r1,将r1存储到i,将r1存储到a`(寄存器"r1"和存储器位置"i"和"a").唯一的区别是增量和存储的顺序. (2认同)