লজিক্যাল অপারেটরদের কনসেপ্ট সহজ। এগুলো একটি প্রোগ্রামকে একাধিক কন্ডিশনের ওপর ভিত্তি করে সিদ্ধান্ত নেওয়ার অনুমতি দেয়। প্রতিটি অপারেন্ড একটি কন্ডিশন হিসেবে বিবেচিত হয় যা true বা false ভ্যালুতে ইভ্যালুয়েট হয়। তারপর কন্ডিশনগুলো মানটি op1 operator op2 বা !op1 গ্রুপিং-এর ওভারল ভ্যালু নির্ধারণ করতে ব্যবহৃত হয়।
লজিক্যাল OR অপারেটর (||) বুলিয়ান মান true ফেরত দেয় যদি দুটি অপারেন্ডের যেকোনো একটি বা দুটোই true হয় এবং অন্যথায় false ফেরত দেয়। অপারেন্ডগুলো ইভ্যালুয়েশনের আগে ইম্পলসিটলি bool টাইপে কনভার্ট হয়, এবং রেজাল্ট bool টাইপের। লজিক্যাল OR-র লেফট-টু-রাইট অ্যাসোসিয়েটিভিটি রয়েছে। লজিক্যাল OR অপারেটরের অপারেন্ডগুলো একই টাইপের হতে বাধ্য নয়, কিন্তু সেগুলো ইন্টিগ্রাল বা পয়েন্টার টাইপের হতে হবে। অপারেন্ডগুলো সাধারণত রিলেশনাল বা ইকোয়ালিটি এক্সপ্রেশন।
প্রথম অপারেন্ড সম্পূর্ণরূপে ইভ্যালুয়েট হয় এবং সব সাইড ইফেক্ট সম্পূর্ণ হয় লজিক্যাল OR এক্সপ্রেশন এর ইভ্যালুয়েশন folytানোর আগে। দ্বিতীয় অপারেন্ড শুধু তখন ইভ্যালুয়েট হয় যখন প্রথম অপারেন্ড false (০) ইভ্যালুয়েট করে। এটি দ্বিতীয় অপারেন্ডের বेफিজুল ইভ্যালুয়েশন এড়ায় যখন লজিক্যাল OR এক্সপ্রেশন true হয়।
লজিক্যাল AND অপারেটর (&&) বুলিয়ান মান true ফেরত দেয় যদি দুটি অপারেন্ডই true হয় এবং অন্যথায় false ফেরত দেয়। অপারেন্ডগুলো ইভ্যালুয়েশনের আগে ইম্পলসিটলি bool টাইপে কনভার্ট হয়, এবং রেজাল্ট bool টাইপের। লজিক্যাল AND-র লেফট-টু-রাইট অ্যাসোসিয়েটিভিটি রয়েছে। লজিক্যাল AND অপারেটরের অপারেন্ডগুলো একই টাইপের হতে বাধ্য নয়, কিন্তু সেগুলো ইন্টিগ্রাল বা পয়েন্টার টাইপের হতে হবে। অপারেন্ডগুলো সাধারণত রিলেশনাল বা ইকোয়ালিটি এক্সপ্রেশন।
প্রথম অপারেন্ড সম্পূর্ণরূপে ইভ্যালুয়েট হয় এবং সব সাইড ইফেক্ট সম্পূর্ণ হয় লজিক্যাল AND এক্সপ্রেশন এর ইভ্যালুয়েশন folytানোর আগে। দ্বিতীয় অপারেন্ড শুধু তখন ইভ্যালুয়েট হয় যখন প্রথম অপারেন্ড true (নন-জিরো) ইভ্যালুয়েট করে। এই ইভ্যালুয়েশন দ্বিতীয় অপারেন্ডের বेफিজুল ইভ্যালুয়েশন এড়ায় যখন লজিক্যাল AND এক্সপ্রেশন false হয়।
লজিক্যাল নিগেশন অপারেটর (!) তার অপারেন্ডের অর্থ উল্টায় দেয়। অপারেন্ড অবশ্যই আর্থমেটিক বা পয়েন্টার টাইপের হতে হবে (অথবা এমন এক্সপ্রেশন যা আর্থমেটিক বা পয়েন্টার টাইপে ইভ্যালুয়েট হয়)। অপারেন্ড ইম্পলসিটলি bool টাইপে কনভার্ট হয়। রেজাল্ট true যদি কনভার্ট করা অপারেন্ড false হয়; রেজাল্ট false যদি কনভার্ট করা অপারেন্ড true হয়। রেজাল্ট bool টাইপের।
উদাহরণ
#include <iostream>
using namespace std;
int main() {
bool x = true, y = false;
cout << (x || y) << endl;
cout << (x && y) << endl;
cout << (!x) << endl;
return 0;
}
আউটপুট
এটি নিচের আউটপুট দেবে:
1 0 0
এটি হলো কারণ দুটির একটা false, তাই AND false, একটা true তাই OR true এবং true(x)-র NOT false, অর্থাৎ ০।