ใครบางคนสามารถอธิบายเหตุผลได้ทำไมในภาษายอดนิยม (ดูหมายเหตุด้านล่าง) ตัวดำเนินการเปรียบเทียบ (==,! =, <,>, <=,> =) มีลำดับความสำคัญสูงกว่าตัวดำเนินการระดับบิต (&, |, ^ , ~)?
ฉันไม่คิดว่าฉันเคยเจอการใช้งานที่สำคัญกว่านี้จะเป็นธรรมชาติ มันเป็นสิ่งที่ชอบเสมอ:
if( (x & MASK) == CORRECT ) ... // Chosen bits are in correct setting, rest unimportant
if( (x ^ x_prev) == SET ) // only, and exactly SET bit changed
if( (x & REQUIRED) < REQUIRED ) // Not all conditions satisfied
กรณีที่ฉันจะใช้:
flags = ( x == 6 | 2 ); // set bit 0 when x is 6, bit 1 always.
อยู่ใกล้กับไม่มีอยู่
อะไรคือแรงจูงใจของนักออกแบบภาษาในการตัดสินใจเรื่องความสำคัญของผู้ปฏิบัติงาน
ตัวอย่างเช่นทั้งหมดยกเว้น SQL ที่ด้านบน 12 ภาษาเป็นเช่นนั้นในรายการภาษายอดนิยมของการเขียนโปรแกรมที่ langpop.com: C, Java, C ++, PHP, JavaScript, Python, C #, Perl, SQL, Ruby, Shell, Visual Basic
[arithmetics] [logic operator] [arithmetics]
คือ โปรแกรมเมอร์ส่วนใหญ่ไม่ได้สร้างระเบียบวงเล็บเช่นif(((x+getLowX()) < getMinX) || ((x-getHighX())>getMaxX())))
- ส่วนใหญ่จะถือว่ามีความสำคัญของเลขคณิตมากกว่า logics และเขียนif( ( x + getLowX() < getMinX ) || ( x - getHighX() > getMaxX() ))
สมมติว่ามีความสำคัญของการดังกล่าวข้างต้น+
<
ตอนนี้โดยสัญชาตญาณif( x ^ getMask() != PATTERN )
ควรทำตัวเหมือนกัน XOR เป็นตัวดำเนินการทางคณิตศาสตร์ ความจริงมันตีความว่าif( x ^ ( getMask() != PATTERN ) )
มันเป็นเคาน์เตอร์ที่ใช้งานง่ายอย่างสมบูรณ์