我們必須表達式
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE) ...
填寫的區別C++ ==
if (option & SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE)...
爲什麼爲option
相同的價值觀有不同的結果?
我們必須表達式
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE) ...
填寫的區別C++ ==
if (option & SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE)...
爲什麼爲option
相同的價值觀有不同的結果?
C++ operator precedence指出==
和!=
被&
之前評估。所以,你的第二個語句被評價爲,如果它是這樣的:
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
。執行順序決定了表達式的結果。
有一些問題只是令人困惑。爲什麼對於1,2和3的相同值「1 + 2 * 3」與「(1 + 2)* 3」有不同的結果? – Jon 2012-04-24 13:40:07
-1這個問題。你可以在http://msdn.microsoft.com/en-us/library/fatf1t6a%28v=VS.100%29.aspx?lc=1033 – 2012-04-24 13:43:01
@RaphaelB找到你要找的東西。等等,是不是JScript的列表(儘管它也可能主要適用於C++)?用於C++的是這裏:http://msdn.microsoft.com/en-us/library/126fe14k(v=vs.100).aspx – Botz3000 2012-04-24 13:49:37