0%

c语言中i++与++i到底有啥区别

c语言中i++与++i到底有啥区别

结论: i++++i 在需要代表的语义相同情况的场景下性能要差一点

原因:

i++翻译成汇编就是先将i的值取出, 返回i的值, 到寄存器,执行i+1的操作, 之后将结果在写回i的地址,

++i则是直接将i的地址中数据加1, 之后再返回值, 这时的值是i+1

如果i++++i执行的操作语义对与i来说都可以的话, 即不论是否先执行+1都可以的话, 那么优先使用++i

但是在其他语义不同的使用场景则需要区别对待:

比如:

*p++ 是取p所指向的值, 之后对p指针执行+1操作

*++p 则是先执行p指针+1, 再取p+1地址的值

(*p)++ 则是取p地址指向的值,之后对值执行+1计算

同理对于i----i也是适用的.

其实i++ 相当于 i=i+1 是一个表达式. 具有左值和右值.