簡體   English   中英

原子:即使條件為假,也輸入 if 語句

[英]Atomic: if statement is entered even though the conditional is false

編輯:最小的可重現示例

#include <atomic>
int main()
{
    std::atomic_uint atomic_write_position{ 0 };
    unsigned write_position = atomic_write_position.fetch_add(1);
    bool b = false;
    b = atomic_write_position.compare_exchange_weak(write_position, 0);
    if (b);
    {
        auto x = 0;
    }
}

在此示例中, compare_exchange_weak應該失敗,因為atomic_write_position=1write_position=0 ,並且行為正確返回 false 並用write_position的值atomic_write_position 但是,if 語句之后的行為不正確,即使 b 為假,也會輸入。

我正在使用視覺工作室 16.9.2

去掉分號; 在 if 語句中

您的評論說“如果 b 為假”,但您的測試為真。

if (b) //b is false

將其更改為:

if (!b) //b is false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM