C/C++:加0

PhD*_*hDP 3 c c++

我在函数中有以下行来计算序列中'G'和'C'的数量:

count += (seq[i] == 'G' || seq[i] == 'C');
Run Code Online (Sandbox Code Playgroud)

编译器是否足够聪明,当他们看到'count + = 0'时他们没有做任何事情,或者他们真的会浪费时间'加'0?

Cli*_*ton 7

通常

x += y;
Run Code Online (Sandbox Code Playgroud)

比...更快

if (y != 0) { x += y; }
Run Code Online (Sandbox Code Playgroud)

即使y = 0,因为第一个选项中没有分支.如果它真的很重要,你将不得不检查编译器输出,但不要认为你的方式更快,因为它有时不会添加.

  • @Mike:问题是"编译器是否足够聪明,当他们看到'计数+ = 0'时他们什么都不做,或者他们真的会浪费时间'添加'0?".他询问优化,而不是风格.我同意你的观点,但我不确定它是如何回答这个问题的,我认为我的回答是这样的. (4认同)