[英]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
的值作為程序可觀察行為的一部分,否則編譯器可以自由地對其進行優化,因為它認為合適。 這是您通過調試器觀察到的優化。
嘗試打印b
或assert(!b)
等的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.