首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >|=是什么意思?

|=是什么意思?
EN

Stack Overflow用户
提问于 2014-02-08 07:45:29
回答 2查看 179关注 0票数 2

|=在C++中是什么意思?我在网络中找到了这段代码片段:

代码语言:javascript
复制
DWORD CDirWatcherDlg::GetChangeFlags1()
{

    DWORD dwChangeNotifyFlags = 0UL;
    FLAG_INFO arFlagInfo[]={
        {IDC_CHECK_FILE_NAME1,      FILE_NOTIFY_CHANGE_FILE_NAME},
        {IDC_CHECK_DIR_NAME1,       FILE_NOTIFY_CHANGE_DIR_NAME},
        {IDC_CHECK_LAST_WRITE1,     FILE_NOTIFY_CHANGE_LAST_WRITE},
        {IDC_CHECK_LAST_ACCESS1,    FILE_NOTIFY_CHANGE_LAST_ACCESS},
        {IDC_CHECK_SIZE1,           FILE_NOTIFY_CHANGE_SIZE},
        {IDC_CHECK_ATTRIBUTES1,     FILE_NOTIFY_CHANGE_ATTRIBUTES},
        {IDC_CHECK_LAST_WRITE1,     FILE_NOTIFY_CHANGE_LAST_WRITE},
        {IDC_CHECK_LAST_ACCESS1,    FILE_NOTIFY_CHANGE_LAST_ACCESS},
        {IDC_CHECK_CREATION1,       FILE_NOTIFY_CHANGE_CREATION},
        {IDC_CHECK_SECURITY1,       FILE_NOTIFY_CHANGE_SECURITY}
    };

    for(int i = 0; i < sizeof(arFlagInfo)/sizeof(arFlagInfo[0]); ++i)
    {
        dwChangeNotifyFlags |= (IsDlgButtonChecked(arFlagInfo[i].nCtrlId) == BST_CHECKED)? arFlagInfo[i].nFlag : 0;
    }

    return dwChangeNotifyFlags;
}

我不明白这个功能是什么。

有人能解释一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-08 07:48:15

这意味着“按位或”,它也在C中使用,并与+=一样工作

例如,假设我们有以下代码:

代码语言:javascript
复制
char o = 0xF0;
o |= 0x0F;     //You can also write o = o|0x0F;

现在,o有一个值0xFF

代码语言:javascript
复制
 1111 0000 | 0000 1111   =   1111 1111

我们再试一次:

代码语言:javascript
复制
char o = 0xE1;  //1110 0001
o |= 0x08;      //0000 1000

o现在是:

代码语言:javascript
复制
1110 0001 | 0000 1000   =   1110 1001

那就是0xE9

票数 3
EN

Stack Overflow用户

发布于 2014-02-08 07:49:38

这是位或赋值操作符。

代码语言:javascript
复制
int a, int b;
// assign some values to a and b
a |= b;

等于

代码语言:javascript
复制
a = (a | b);

有关这里中按位运算符的更多信息,请参见C++。

在你的代码中

代码语言:javascript
复制
dwChangeNotifyFlags |= (IsDlgButtonChecked(arFlagInfo[i].nCtrlId) == BST_CHECKED)? arFlagInfo[i].nFlag : 0;

意味着如果dwChangeNotifyFlags为真,则arFlagInfo[i].nFlagIsDlgButtonChecked(arFlagInfo[i].nCtrlId) == BST_CHECKED,并将结果分配给dwChangeNotifyFlags。否则,dwChangeNotifyFlags将保持不变(因为它的OR值为0)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21643445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档