以下类似Python的构造在C ++中会变慢吗?
bool_stuff[i] || (a[i]=1);
比较普通的旧
if(!bool_stuff[i])
a[i]=1;
原因是,我在嵌套的for
循环中有上述代码段,这是唯一的语句。我认为前者的可读性更高,但只有前者不安全或速度慢时才应使用后者。
答案 0 :(得分:0)
They compile to the same thing(如果您在gcc中使用了-O0
以上的任何优化功能,并且可能在其他编译器中使用了此功能。)
第一种方法的其他缺点是,右侧的表达式必须可转换为bool
(如果无故具有副作用,则调用operator bool
),如果{{1 }}已超载,实际上不会短路。
operator||
语句具有更高的可读性和相同的速度。