C 逗号运算符会使代码变慢吗?

C 逗号运算符会使代码变慢吗?,c,comma-operator,C,Comma Operator,在解决像CodeForces这样的网站上的问题时,我经常使用逗号运算符(在C中)。我已经注意到,我的解决方案似乎比大多数其他解决方案需要更多的执行时间,尽管没有太大区别 所以我的问题是逗号运算符是否会增加CPU的开销?例如,如果不需要对其两个操作数求值。将它们分成两个语句会更快吗?还是编译器会对其进行优化?否。逗号运算符不会使代码变慢 尽管如此,逗号运算符在大多数代码中还是很少见的。几乎只有在两个变量上运行for循环时才需要它,如 for(i = 0, j = n; i < j; i++,

在解决像CodeForces这样的网站上的问题时,我经常使用逗号运算符(在C中)。我已经注意到,我的解决方案似乎比大多数其他解决方案需要更多的执行时间,尽管没有太大区别


所以我的问题是逗号运算符是否会增加CPU的开销?例如,如果不需要对其两个操作数求值。将它们分成两个语句会更快吗?还是编译器会对其进行优化?

否。逗号运算符不会使代码变慢

尽管如此,逗号运算符在大多数代码中还是很少见的。几乎只有在两个变量上运行
for
循环时才需要它,如

for(i = 0, j = n; i < j; i++, j--)
(i=0,j=n;i (我相信有些类似C的语言只允许在
for
循环的第一个和第三个表达式中使用逗号运算符,其他地方都不允许使用。)

在其他任何时候使用逗号运算符时,它通常表示您正在做一些“聪明”但不必要的事情,这主要会使代码更混乱或更难阅读


(尽管如此,大多数C程序中的大多数逗号不是逗号运算符也是事实。在函数调用中分隔参数的逗号不是逗号运算符,分隔多个声明(如
int i,j;
)的逗号也不是。

不太可能。但是,唯一确定的方法是检查组件和/或外形。语言本身没有操作“速度”的固有概念。
我经常使用逗号运算符(在C中)
Don't。编写可读代码。如果存在差异,则很可能是基于编译器、其设置和运行平台的变量。无论如何,我同意@DeiDei的观点,编写可读代码应该比微优化具有更高的优先级。如果你想优化,就选择好的算法。@Dragonthougts为什么你认为编译器不太可能优化它。我的意思是,如果从未使用逗号运算符的返回值,我想这将是一个很好的优化。然而,我开始相信可读代码在竞争编码中并不重要,正如DeiDei所说的那样。@OmarAlhelo我指的不是竞争编码,而是一般的编码。一旦你摆脱了竞争,把坏习惯带到现实世界的项目中,你很可能会受到影响。另一方面,我看不到“丑陋”代码比可读代码表现得更好,特别是逗号运算符。正如DragonThinks所说,好的算法产生性能,而不是逗号。