2920 views

1 Answers

সি-তে তিন ধরনের লজিক্যাল অপারেটর আছে। যেমন !(not), &&(and), ||(or)| এখানে ! একটি ইউনারি অপারেটর এবং এটি দিয়ে কোনো এক্সপ্রেশন তৈরি করা হলে তা মান হিসেবে ১ (সত্য) অথবা ০ (মিথ্যা) রিটার্ন করবে। কোনো একটি সত্য এক্সপ্রেশনের আগে যদি ! অপারেটর ব্যবহার করা হয় তাহলে এক্সপ্রেশনটি মিথ্যা হয়ে যাবে। বাকি দুটি অপারেটর বাইনারি অপারেটর। সুতরাং এই অপারেটর দুটি ব্যবহার করতে দুটি করে ডাটা প্রয়োজন। ধরি, a এবং b দুটি ভেরিয়েবল। যদি a এবং b উভয়ের মান সত্য (০ ছাড়া যেকোনো মান) হয়, শুধু তাহলেই a&&b এই এক্সপ্রেশনের মান সত্য হবে, অন্যথায় মিথ্যা হবে। আর a এবং b-এর যেকোনো একটির মান সত্য (০ ছাড়া যেকোনো মান) হলেই a||b এই এক্সপ্রেশনের মান সত্য হবে। && এবং || অপারেটর ব্যবহারের সময় একটি বিশেষ অবস্থার সৃষ্টি হতে পারে, যাকে বলে ‘শর্টসার্কিট ইভ্যালুয়েশন/নোটেশন’। যেমন : a=3; b=0; c=4; তিনটি ভেরিয়েবল ডিক্লেয়ার করা হলো। এখন যদি printf(‘‘%d’’,(a&&b&&c)); স্টেটমেন্টটি লেখা হয়, তাহলে তা ০ প্রিন্ট করবে। কিন্তু এখানে লক্ষণীয় a এবং b অপারেটরের মধ্যে যখন && করা হচ্ছে তখনই পুরো এক্সপ্রেশনের মান ০ হয়ে যাচ্ছে অর্থাৎ এক্সপ্রেশনটি মিথ্যা হয়ে যাচ্ছে। তাই প্রোগ্রাম আর c ভেরিয়েবল নিয়ে কোনো কাজই করবে না। একেই বলে শর্টসার্কিট ইভ্যালুয়েশন/নোটেশন। অর্থাৎ && অপারেটর কোনো এক্সপ্রেশনের মাঝে 0 পেলেই শর্টসার্কিট ইভ্যালুয়েট করে আর || অপারেটর কোনো এক্সপ্রেশনের মাঝে ১ পেলেই শর্ট সার্কিট ইভ্যালুয়েট করে।

2920 views