簡體   English   中英

c ++方法中的靜態bool變量

[英]Static bool variable in c++ Method

我有一個簡單的代碼,它的行為與我預期的不同。 我真的很喜歡一些見解和想法。

我在成員函數中有一個簡單的代碼,如下所示:

SOME~MEMBER~FUNCTION~IMPLEMENTATION
{
static bool a = false;

m_b = a; //m_b is a Boolean member of the parent class
}

在觀察窗口上分配 (m_b = a) 之前,我看到 m_b 值為 1,值為 0。

在分配 (m_b = a) 之后,我希望 b 有一個假值。 但是當我用調試器觀察窗口檢查它的值時,它顯示 2 個值而不是 0,這總是產生 true。

任何人都知道我錯過了什么? 看起來很簡單,但我真的不明白出了什么問題

更多信息:當我執行 if(a) 時,它會將 a 視為真值,盡管它在監視窗口中顯示為 0,並且以 false 啟動。 真的很混亂

注意:這個答案是在對問題進行重要編輯之前寫的。 除非 OP 為我們提供足夠的信息(最好是 MCVE),否則我不會更新它。


除非您將b的值作為程序可觀察行為的一部分,否則編譯器可以自由地對其進行優化,因為它認為合適。 這是您通過調試器觀察到的優化。

嘗試打印bassert(!b)等的值。

暫無
暫無

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

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