Fill the difference C++ ==

Fill the difference C++ ==

本文关键字:C++ difference the Fill      更新时间:2023-10-16

我们必须表达式

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。执行顺序决定了表达式的结果。