我想知道这个过早且不太重要的事情。我已经写了:
m_playerIndex = ++m_playerIndex % 2 // always either 0 or 1 (int)
为我的国际象棋游戏确保其他玩家在完成刚才的举动之后再进行下一步动作。但是它不是很可读,是吗?
最重要的是,它会将变量递增1,然后在已适配变量上调用模块运算符2,这意味着我有了这个临时变量,我将其分配给m_playerIndex,然后立即将其替换为%2的结果。什么是最有效的?是选项2、1,还是根本没有区别?(我还没有程序可以检查那些东西。)
1)
m_playerIndex = ++m_playerIndex % 2
2)
m_playerIndex = (m_playerIndex + 1) % 2
表达方式
m_playerIndex = (m_playerIndex + 1) % 2
清楚地向读者传达正在发生的事情。此处每项可能的优化都是编译器的工作。
除此之外,出于好奇,请访问https://godbolt.org/,在这里您可以查看和比较为代码创建的汇编程序指令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句