কেউ কি যুক্তিটি ব্যাখ্যা করতে পারেন, কেন সর্বাধিক জনপ্রিয় ভাষাগুলিতে (নীচের নোটটি দেখুন) তুলনা অপারেটরগুলি (==,! =, <,>, <=,> =) বিটওয়াইজ অপারেটরগুলির (এবং, |, ^) এর চেয়ে বেশি অগ্রাধিকার পাচ্ছেন , ~)?
আমি মনে করি না যে আমি কখনও এমন ব্যবহারের মুখোমুখি হয়েছি যেখানে এই নজিরটি প্রাকৃতিক হবে। এটি সর্বদা মত স্টাফ:
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.
অস্তিত্বের কাছাকাছি
অপারেটরদের এরকম নজির সম্পর্কে সিদ্ধান্ত নিতে ভাষা ডিজাইনারদের অনুপ্রেরণা কী ছিল?
উদাহরণস্বরূপ, শীর্ষ 12 টি ভাষাতে এসকিউএল ব্যতীত সমস্ত ল্যাঙ্গপপ ডটকমের প্রোগ্রামিং ভাষা জনপ্রিয়তার তালিকার মতো: সি, জাভা, সি ++, পিএইচপি, জাভাস্ক্রিপ্ট, পাইথন, সি #, পার্ল, এসকিউএল, রুবি, শেল, ভিজ্যুয়াল বেসিক।
[arithmetics] [logic operator] [arithmetics]
। বেশিরভাগ প্রোগ্রামাররা প্রথম বন্ধনীর মতো জঞ্জাল তৈরি করে না if(((x+getLowX()) < getMinX) || ((x-getHighX())>getMaxX())))
- বেশিরভাগ যুক্তিবিদ্যার চেয়ে পাটিগণিতের অগ্রাধিকার গ্রহণ করবে এবং উপরের if( ( x + getLowX() < getMinX ) || ( x - getHighX() > getMaxX() ))
অগ্রাধিকারটি ধরে নিয়ে লিখবে । এখন স্বজ্ঞাতভাবে একই আচরণ করা উচিত, এক্সওআরআর গণিত অপারেটর। এটি যেভাবে ব্যাখ্যা করা হয়েছে তা সম্পূর্ণরূপে স্বজ্ঞাত। +
<
if( x ^ getMask() != PATTERN )
if( x ^ ( getMask() != PATTERN ) )