Spa*_*cey 0 c++ int bit-manipulation function
这是一个令我困惑的C++问题.(很长一段时间后,我正在刷新我的C++).我在这里读这个例子.有两个部分让我困惑:
第一部分:
在代码行中:
void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE )
Run Code Online (Sandbox Code Playgroud)
WINDOW_AUTOSIZE是一个输入,但据我所知,它不是一个int.当我编写这行并运行时,它工作正常.我对这个函数的输入字面意思是'WINDOW_AUTOSIZE'.我很困惑为什么这样做.WINDOW_AUTOSIZE如何成为一个int?
我的第二个问题是关于最后一行,他们说:
默认情况下,flags == CV_WINDOW_AUTOSIZE | CV_WINDOW_KEEPRATIO | CV_GUI_EXPANDED
我很困惑这怎么/这意味着什么......我知道那个| 是一个按位OR,但不清楚这意味着什么...
谢谢.
用大写字母书写的单词是常数.它们已在代码或标题中的某处定义,以便在其他位置使用.常量可以代表数字,字符串等.此代码中的常量显然属于类型int
CV_WINDOW_AUTOSIZE | CV_WINDOW_KEEPRATIO | CV_GUI_EXPANDED只是int常量代表的值的按位OR .这些是空间常量,其中只有一位int被设置(所谓的标志)
假设CV_WINDOW_AUTOSIZE是0x1并且CV_WINDOW_KEEPRATIO是0x2.因此按位OR运会产生0x3.然后被调用的函数可以通过AND操作检查设置了哪个标志.