将布尔变量添加到 int

Add bool variable to int

本文关键字:int 添加 变量 布尔      更新时间:2023-10-16

我的代码中有一个布尔函数"lookup",它有参数byte:lookup(byte(。我的变量_size是一个整数。做以下事情是好习惯吗:

_size += !lookup(byte);

我的意思是关键是布尔和 int 的隐式转换。 否则我必须做这样的事情

if (!lookup(byte)) {
_size++;
}

但我认为这会降低效率。

表达式!lookup(byte)保证具有以下值之一,truefalse。当用作int时,它们分别转换为10

所以以下 2 个片段:

_size += !lookup(byte); // true -> add 1, false -> add 0

if (!lookup(byte)) {  // if true
_size++;            // add 1
}

是等效的。 您应该选择更容易阅读和理解的那个。编译器将为两个版本生成相同的程序集,因此您不必担心效率。

效率没有区别。编译器应用优化,两者的结果可能完全相同。

如果要使转换更明确,可以使用static_cast

_size += static_cast<size_t>(!lookup(byte));