使用否定运算符! std::atomic<uint_32>

Using negation operator ! with std::atomic<uint_32>

我有一段代码:

#include <atomic>
#include <cstdint>


int main()
{
    std::atomic<uint32_t> foo;

    foo = 5;
    std::cout << foo.load() << std::endl;

    if (!foo) // what is checked here????????????
    {
        std::cout << "!foo == TRUE\n";
    }
    else
    {
        std::cout << "!foo == FALSE\n";
    }


    return 0;
}

// Output : 
// 5
// !foo == FALSE

std::atomic 的 cppreference 上没有 bool 运算符,CLion 没有将其显示为运算符。在 if-condition?

中检查了什么?

它试图做的是将其转换为布尔值,以便它可以确定哪个块要 运行。
因为 5 是一个 'truthy' 值,所以它将它转换为 true,然后取反为 false。另一方面,0 是一个 'falsy' 值,因此它变为 false 否定为 true