【发布时间】:2015-11-29 10:36:26
【问题描述】:
我有这个 MFC 代码:
bool SomeBooleanValue;
...
m_ComboBox.ResetContent();
m_ComboBox.AddString("String1");
m_ComboBox.AddString("String2");
m_ComboBox.SetCurSel(SomeBooleanValue);
其中 m_ComboBox 是一个 CComboBox 对象。有时当 CComboBox::SetCurSel 函数中的 SomeBooleanValue 为 true 而不是 1 时,我在调试期间看到值 252:
_AFXWIN_INLINE int CComboBox::SetCurSel(int nSelect)// here nSelect = 252!
{ ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_SETCURSEL, nSelect, 0); }
据我所知,C++ 标准说:
bool 类型的右值可以转换为 int 类型的右值,false 变为 0,true 变为 1。
任何想法为什么会发生这种情况?
【问题讨论】:
-
SomeBooleanValue在这里不是右值。 -
SomeBooleanValue未初始化。 -
101010,我没有注意到...所以当使用布尔变量作为整数时,我们不能确定它们会被转换为0和1吗? πάντα ῥεῖ,SomeBooleanValue 已初始化
-
@IKM2007 至少它不在您显示的代码中。
标签: c++ mfc integer boolean type-conversion