Fill the difference C++ ==
Fill the difference C++ ==
我们必须表达式if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE)
...
if ( option & SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE )...
为什么对于相同的option
值,结果不同?
C++运算符优先级表示在&
之前计算==
和!=
。因此,您的第二个语句被评估为:
if (option & (SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE))
在此语句中
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE)
此option & SERVER_OPTIONS::VALUE
部分首先从 () 较高的优先级开始进行评估。在后一种情况下,首先评估SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE
。执行顺序决定了表达式的结果。
相关文章:
- Difference in displaying cv2 Mat
- Difference atexit() and at_quick_exit()
- Difference Between c.foo() and c.parent::foo()
- FFMPEG:av_rescale_q - time_base difference
- Difference between boost::thread and std::thread
- x86-64 movl and cmpl difference
- Fill the difference C++ ==
- Difference between QScreen::width() and QScreen::deviceWidth
- Boost.Spirit.Qi:在解析时动态创建"difference"解析器
- difference between & and * declaration
- Difference between SomeClass **ptr; and SomeClass *ptr;
- Difference between add_lvalue_reference_t<T> and T&
- Qt/QML qmlRegisterType vs. setContextProperty (difference)
- Difference: cin.getline() and getline(cin, st)
- ::tolower vs std::tolower difference
- Difference in if()?
- Difference in two for nested loops.(C++)