类似蟒蛇 ||和 &&for if in C++

Python-like || and && for if in C++

本文关键字:for in C++ if      更新时间:2023-10-16

以下类似Python的构造在C++中是否更慢?

bool_stuff[i] || (a[i]=1);

比较平原老

if(!bool_stuff[i])
  a[i]=1;

原因是,我将上面的代码片段放在嵌套的for循环中,这是唯一的语句。我认为前一种情况下的可读性更高,但只有在前一种不安全或速度慢的情况下才应使用后者。

它们编译为相同的东西(如果您在 gcc 中使用上述任何优化-O0,也可能在其他编译器中使用(。

第一种方法的其他缺点是,右侧的表达式必须可转换为bool(如果无缘无故有副作用,则调用operator bool(,并且如果operator||过载,它实际上不会短路。

if语句的可读性更强,速度也相同。