当我遇到如下代码时,我正在阅读QEMU源代码: -
CPUState *cpu_by_arch_id(int64_t id)
{
CPUState *cpu;
CPU_FOREACH(cpu) {
CPUClass *cc = CPU_GET_CLASS(cpu);
if (cc->get_arch_id(cpu) == id) {
return cpu;
}
}
return NULL;
}
bool cpu_exists(int64_t id)
{
return !!cpu_by_arch_id(id);
}
函数 cpu_exists 是一个布尔函数,它返回函数 cpu_by_arch_id 返回的值(在应用运算符!!之后)。正如您所见,cpu_by_arch_id
返回指向特定QEMU结构的指针。我发现很难理解如何使用 !! 运算符将返回值转换为布尔值。
在这里使用“!!” - 双重否定运算符的具体目的是什么?