簡單的問題,但與||
(或)運算符相比,|
運算符做什麼?|算子與||運算符
回答
|
是一個位OR
運營商,其中爲||
是一個邏輯運算符OR
。也就是說,前者用於將來自兩個數值的比特「合併」爲一個聯合,而後者則在運算符左側或右側的任一條件爲真時評估爲真。
具體而言,按位運算符(而不是與邏輯運算符混淆)對數字的每一位(在相同的序數位置)進行操作,並相應地計算結果。在逐位OR
的情況下,所得到的位爲1,如果任一比特爲1,且0僅當兩個位都爲0。例如,1 | 2 = 3,這是因爲:
1 = 0001
2 = 0010
--------
0011 = 3
此外,2 | 3 = 3,因爲:
2 = 0010
3 = 0011
--------
0011 = 3
這看起來可能會讓人困惑,但最終你會得到它的竅門。 Bitwise OR
主要用於在位域上設置標誌的情況。也就是說,一個值將一組相關條件的開/關狀態保存在單個值(通常是32位數字)中。在Win32中,窗口樣式值是位字段的一個很好的例子,每個樣式都由一個位(或標誌)表示,如WS_CAPTION,它指示窗口是否有標題欄。
|
是bitwise or運營商。維基百科頁面Operators in C and C++很好地描述了所有的操作員。
單詞中有幾個(通常是32,16,8或64)位。按位OR(一個垂直條)爲該位位置中的每個位置返回邏輯或。邏輯OR(兩個垂直條)只返回TRUE或FALSE。
該||是一個邏輯或和|是一個按位或。大多數情況下,當你檢查if(i == 0 || i == 1)時,你只是想使用||但是當你正在做象傳遞標誌這樣的變量時使用|。 (如果你不知道那是什麼,你可能不需要|在所有)
正如其他人提及的,|
是按位 OR運算並||
是邏輯 OR運算符,以及它們在概念上不同的操作上不同種類的輸入,(通常)操作。但是,這可能會引發另一個問題:如果您將|
與布爾操作數一起使用,那麼它會不會與||
做同樣的事情,因爲一切最終都會歸結爲位?是否需要獨特的||
操作員?
除了概念上的差異,另一個重要的區別是||
是短路。這意味着如果第一個操作數爲真,則第二個操作數根本就不被計算。例如:
int flag = Foo() || Bar();
將調用Bar()
只有Foo()
返回0。如果|
使用,兩個操作數總是會進行評估。
(而且,當然,&
和&&
有類似的行爲。)
- 1. ||運算符與=運算符相同嗎?
- 2. 定時運算符+,運算符,運算符*和運算符/
- 3. 與運算符或
- 4. 與Like運算符
- 5. C++運算符()括號 - 運算符類型()與類型運算符()
- 6. 邏輯與運算符與
- 7. 麻煩與算術運算符在AngularJS
- 8. 與作爲算術運算符在PHP
- 9. Versant OQL聲明與算術運算符
- 10. 算術運算符
- 11. 運算符重載「運算符T *()」產生比較運算符?
- 12. MUL運算符與NASM中的IMUL運算符
- 13. 標準SQL布爾運算符IS與等於(=)運算符
- 14. Javascript:使用邏輯運算符與比較運算符
- 15. Javascript中的OR運算符(|)與parseInt的運算符相同嗎?
- 16. 奇怪的運算符優先級與?? (空合併運算符)
- 17. 問題與運算符==
- 18. SQL Charindex與LIKE運算符
- 19. 與*運算符的解釋
- 20. 運算符與C#動態?
- 21. 與布爾運算符
- 22. XQuery!=運算符與序列
- 23. 與布爾運算符
- 24. 問題與== ==運算符
- 25. 與布爾運算符
- 26. LIKE運算符與$變量
- 27. 運算符=不與fstream的
- 28. Ruby比較運算符? ==與===
- 29. 與&運算符匹配
- 30. - vs - =運算符與numpy
+1希望我能夠投票這件事不止一次。非常重要的一點! – 2011-05-01 20:21:52