想象一下,我有以下一段 C 代码,其中 foo() 产生副作用并返回一个整数:
if(bar) {
foo();
return 0;
}
现在,假设我真的很喜欢让我的代码紧凑,可能会以读者为代价,我将其更改为:
if (bar)
return foo() && 0;
我是否可以确定这两段代码会产生相同的行为,或者我是否会冒着调用 foo() 的风险,因为可能的编译器优化或类似的事情不会执行,因此不会产生预期的副作用?
注意:这不是关于哪一段代码更好的问题,而是这两段代码是否真的在所有情况下产生相同的行为。我认为大多数人(和我)都同意应该使用前一段代码。