【发布时间】:2017-05-13 20:50:31
【问题描述】:
如果sizeof(bool) == 1 则按值传递是有效的,因为bool 适合寄存器(假设一些标准调用约定)。但是sizeof(bool) 是实现定义的。那么bool 在通过值而不是通过引用传递时总是保证效率更高吗? sizeof(bool) 的上限是否有任何保证?
【问题讨论】:
-
定义“高效”。当您传递引用时,您必须花时间在使用时取消引用它。
-
@aryamccarthy 是的,这就是我要说的。按值传递不涉及取消引用。所以效率更高。
-
@freakish, @πάνταῥεῖ 表示 C 没有引用或原始
bool类型。我已经提交了修改。 -
如果您将布尔值传递给函数,您的设计可能存在一些问题,我会担心哪个更“高效”,在不太可能的情况下它对您很重要,您应该通过基准测试和分析进行调查。
-
我们都同意 1234 字节的布尔值是一个非常愚蠢的平台设计。我怀疑你会在野外看到类似的东西。除此之外,分析将告诉您如何权衡取舍。