উত্তর:
আমি এমএসডিএন সি # ডকুমেন্টেশন দ্বারা কিছুটা বিভ্রান্ত হয়েছি যা জানিয়েছে যে
&
এবং|
এটি লজিকাল অপারেটর এবং এটি&&
এবং||
শর্তসাপেক্ষ অপারেটর। আমি ডাকতে থাক&&
,||
এবং!
লজিক্যাল অপারেটর, তাই আমি ভুল বলেছি নাকি?
না; আপনি সঠিক।
এমএসডিএন ডকুমেন্টেশনে অসংখ্য ছোট, বেশিরভাগ গুরুত্বহীন নামকরণ ত্রুটি রয়েছে; আমি তাদের যতটুকু পারলাম তা বের করার চেষ্টা করেছি, তবে যে ক্ষেত্রে এটি গুরুতরভাবে ভুল এবং বিভ্রান্তিমূলক নয়, ক্ষেত্রে এটি সর্বদা সময় মতো বুদ্ধিমান ব্যবহার নয়। যদি আপনি কোনও সি # বৈশিষ্ট্যের নাম সম্পর্কে কোনও সুনির্দিষ্ট বিবৃতি চান তবে স্পেসিফিকেশনটিতে যান।
সুতরাং: প্রাসঙ্গিক কর্তৃপক্ষ হ'ল সি # নির্দিষ্টকরণ, যা বিভাগ 7.11 তে উল্লেখ করেছে:
&
,^
, এবং|
অপারেটরদের লজিক্যাল অপারেটর বলা হয়।
এরপরে এটি বিল্ট-ইন লজিকাল অপারেটরগুলিকে আরও পূর্ণসংখ্যার, গণনা, বুলিয়ান এবং নোলার-বুলিয়ান লজিকাল অপারেটরগুলিকে আরও ভেঙে যায়। এছাড়াও ব্যবহারকারী-সংজ্ঞায়িত লজিকাল অপারেটর রয়েছে; বিশদ দেখুন।
বিভাগে 7.12 আমাদের আছে
&&
এবং||
অপারেটরদের শর্তসাপেক্ষ লজিক্যাল অপারেটর বলা হয়। তাদের "শর্ট-সার্কিট" লজিকাল অপারেটরও বলা হয়।
সুতরাং তাদের সমস্ত লজিকাল অপারেটর। তাদের মধ্যে কিছু শর্তযুক্ত লজিকাল অপারেটর ।
শর্তাধীন লজিকাল অপারেটরগুলিকে কী শর্তযুক্ত করে ? কেউ একটি অনুমান করতে পারে যে এটি সাধারণত শর্তযুক্ত বিবৃতি ( if
) বা শর্তসাপেক্ষ অভিব্যক্তি ( ? :
) এ ব্যবহৃত হয়। আসল কারণটি স্পেসিফিকেশন দ্বারা দেওয়া হয়েছে:
&&
এবং||
অপারেটরদের শর্তসাপেক্ষ সংস্করণ&
এবং|
অপারেটরদের: অপারেশনx && y
অপারেশন অনুরূপx & y
ছাড়াy
শুধুমাত্র মূল্যায়ন হলেx
মিথ্যা নয়। অপারেশনটি অপারেশনেরx || y
সাথে সম্পর্কিতx | y
, কেবলমাত্র সত্য নাy
হলে মূল্যায়ন করাx
হয়।
শর্তসাপেক্ষে লজিকাল অপারেটরগুলির নামকরণ করা হয়েছে কারণ ডান হাত অপারেন্ডটি শর্তাধীনভাবে বাম হাত অপারেন্ডের মানের উপর নির্ভর করে মূল্যায়ন করা হয়।
শর্তযুক্ত লজিকাল অপারেটরগুলি শর্তাধীন অভিব্যক্তির জন্য কেবল "সিনট্যাকটিক সুগার" হিসাবে উল্লেখ করে আমরা আরও স্পষ্টভাবে দেখতে পাচ্ছি । x && y
সহজভাবে লেখার আরও আনন্দদায়ক উপায় x ? y : false
এবং x || y
এটি সহজভাবে লেখার আরও আনন্দদায়ক উপায় x ? true : y
। শর্তযুক্ত লজিক্যাল এক্সপ্রেশনগুলি আসলে শর্তাধীন অভিব্যক্তি।
শর্তাধীন লজিকাল অপারেটরের একটি ব্যবহারকারী-সংজ্ঞায়িত ফর্মও রয়েছে এবং এটি কিছুটা জটিল। বিশদ জন্য বিশদ দেখুন।
আরও পড়ার বিষয়, যদি এই বিষয়টি আপনার আগ্রহী:
সি # এ এগুলি সমস্ত লজিকাল অপারেটর।
int x = 0xABCD & 0xFF // x == 0xCD
&&
এবং ||
"বলা হয় শর্তাধীন লজিক্যাল অপারেটর" কারণ তারা শর্ট-সার্কিট।
bool someOtherCondition = true;
if (x == 0xEF && someOtherCondition) // someOtherCondition is not evaluated,
// because x == 0xEF is false
নোট করুন যে এই পরিভাষা ভাষা থেকে ভাষাতে আলাদা হয়। সি এবং সি ++ এ &&
এবং ||
কেবলমাত্র লজিকাল অপারেটর। জাভাতে &
এবং |
তাকে বিটওয়াইজ অপারেটর বলা হয় , অন্যদিকে সি এবং সি ++ এগুলিকে অরিথমেটিক অপারেটর হিসাবে শ্রেণিবদ্ধ করে ।
বিন্দু যে &
এবং |
হয় bitwise অপারেটরদের, অর্থাত তারা প্রয়োজন এবং ফলন বিট স্ট্রিং মান প্রয়োগ করা হয়েছে। এবং বিটওয়াইজ প্রোগ্রামারদের মধ্যে একটি খুব ব্যবহৃত শব্দ।
উদাহরণস্বরূপ 0xff & 0x00 == 0x00
, যখন 0xff | 0x00 == 0xff
।
আর &&
ও ||
শর্ত প্রয়োগ, এবং শর্ত স্বাভাবিক মান উত্পাদ করা হয়; অর্থাত্ true
এবং false
।
উদাহরণস্বরূপ true && false == false
, যখন true || false == true
।
সুতরাং &&
এবং ||
এটি শর্তসাপেক্ষ অপারেটর বলা যেতে পারে , যদিও এটি প্রোগ্রামারদের মধ্যে একটি সাধারণ শব্দ নয়।
অবশ্যই, প্রতিটি সি, সি ++, জাভা এবং সি # প্রোগ্রামার এ সব জানে। তবে আমি অনুমান করি যে ভুল বোঝাবুঝি ঘটে কারণ "শর্তসাপেক্ষ অপারেটর" আমাদের প্রোগ্রামারদের দ্বারা প্রায়শই ব্যবহৃত একটি শব্দ নয়।
|
সাথে মতবিনিময়যোগ্য||
, যদিও অনেক ক্ষেত্রে তারা প্রোগ্রামের আচরণে কোনও আপাত পরিবর্তনের সাথে বিনিময় হতে পারে।