类似于Python的||和&& for if in C ++

时间:2019-04-13 18:01:26

标签: c++ c++11

以下类似Python的构造在C ++中会变慢吗?

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

比较普通的旧

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

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

1 个答案:

答案 0 :(得分:0)

They compile to the same thing(如果您在gcc中使用了-O0以上的任何优化功能,并且可能在其他编译器中使用了此功能。)

第一种方法的其他缺点是,右侧的表达式必须可转换为bool(如果无故具有副作用,则调用operator bool),如果{{1 }}已超载,实际上不会短路。

operator||语句具有更高的可读性和相同的速度。