นอกเหนือจากสิ่งที่กล่าวถึงในคำตอบอื่น ๆ ก็เป็นที่น่าสังเกตว่า&&
และ||
มีความสำคัญที่แตกต่างจากและ&
|
แยกจากตารางลำดับความสำคัญ (โดยมีลำดับความสำคัญสูงสุดอยู่ด้านบนสุด)
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
สิ่งนี้มีความหมายกับคุณอย่างไร?
ไม่มีอะไรแน่นอนตราบใดที่คุณติดกับอย่างใดอย่างหนึ่งเท่านั้น&
และ|
หรือเฉพาะและ&&
||
แต่เนื่องจาก|
มีลำดับความสำคัญสูงกว่า&&
(เมื่อเทียบกับ||
ซึ่งมีลำดับความสำคัญต่ำกว่า) การผสมอย่างอิสระอาจนำไปสู่พฤติกรรมที่ไม่คาดคิด
ดังนั้นa && b | c && d
เป็นเช่นเดียวกับa && (b | c) && d
,
ตรงข้ามกับการซึ่งจะเป็นa && b || c && d
(a && b) || (c && d)
เพื่อพิสูจน์ว่ามันไม่เหมือนกันให้พิจารณาสารสกัดจากตารางความจริง:
a | b | c | d | (b|c) | (a&&b) | (c&&d) | a && (b|c) && d | (a&&b) || (c&&d)
F | T | T | T | T | F | T | F | T
^ ^
|- not the same -|
หากคุณต้องการให้หรือมีลำดับความสำคัญสูงกว่า AND คุณสามารถใช้|
และ&&
ร่วมกันได้ แต่ไม่แนะนำให้ใช้
แต่คุณควรใส่ไว้ในวงเล็บเพื่อชี้แจงลำดับความสำคัญเมื่อใดก็ตามที่ใช้สัญลักษณ์ต่างกันเช่น(a && b) || c
(วงเล็บเพื่อชี้แจงลำดับความสำคัญ) a && b && c
(ไม่ต้องใช้วงเล็บ)