在C++中哪种递增方法更优越?

Ant*_*ony 1 c++ bitwise-operators

我看到有人使用这种方法来增加变量:

r = (r + 1) & 0xf;
Run Code Online (Sandbox Code Playgroud)

这种方法比仅使用更好/更快:

r++;
Run Code Online (Sandbox Code Playgroud)

为什么有人会使用按位,如果只是重复,则使用0xf?

Jam*_*lis 14

那些不一样.第一个增量r然后对它执行模运算,有效地做同样的事情:

r = (r + 1) % 16;
Run Code Online (Sandbox Code Playgroud)


gre*_*ade 11

表达方式:

r = (r + 1) & 0xf;
Run Code Online (Sandbox Code Playgroud)

实际上等同于(假设r是保证非负):

r = (r + 1) % 16;
Run Code Online (Sandbox Code Playgroud)

因此,无法比较上述任何一种陈述r++.哪个"更快"或"更好"并不重要,因为它们首先不会做同样的事情.