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 是一个表达式. 具有左值和右值.