কন্ডিশনাল অপারেটর (? :) হল একটি টার্নারি অপারেটর (এর জন্য তিনটি অপারেন্ড লাগে)। শর্তসাপেক্ষ অপারেটর নিম্নরূপ কাজ করে -
- প্রথম অপারেন্ডটি স্পষ্টভাবে বুলে রূপান্তরিত হয়। এটি মূল্যায়ন করা হয় এবং চালিয়ে যাওয়ার আগে সমস্ত পার্শ্ব প্রতিক্রিয়া সম্পন্ন হয়৷
- যদি প্রথম অপারেন্ডটি সত্য (1) তে মূল্যায়ন করে, তবে দ্বিতীয় অপারেন্ডটি মূল্যায়ন করা হয়৷
- যদি প্রথম অপারেন্ডটি মিথ্যা (0) মূল্যায়ন করে, তবে তৃতীয় অপারেন্ডটি মূল্যায়ন করা হয়৷
কন্ডিশনাল অপারেটরের ফলাফল হল যেটি অপারেন্ড মূল্যায়ন করা হয় তার ফলাফল - দ্বিতীয় বা তৃতীয়৷ শুধুমাত্র শেষ দুটি অপারেন্ডের একটি শর্তসাপেক্ষ অভিব্যক্তিতে মূল্যায়ন করা হয়। শর্তসাপেক্ষ অপারেটরের মূল্যায়ন খুবই জটিল। উপরের পদক্ষেপগুলি এটির একটি দ্রুত ভূমিকা ছিল। শর্তযুক্ত অভিব্যক্তিতে ডান-থেকে-বাম সহযোগীতা রয়েছে। প্রথম অপারেন্ডটি অবশ্যই অবিচ্ছেদ্য বা পয়েন্টার টাইপের হতে হবে। নিম্নলিখিত নিয়মগুলি দ্বিতীয় এবং তৃতীয় অপারেন্ড -
-এর ক্ষেত্রে প্রযোজ্য- যদি উভয় অপারেন্ড একই ধরনের হয়, ফলাফলটি সেই ধরনের।
- যদি উভয় অপারেন্ডই গাণিতিক বা গণনার প্রকারের হয়, তবে সাধারণ গাণিতিক রূপান্তরগুলি (স্ট্যান্ডার্ড রূপান্তরে আচ্ছাদিত) সেগুলিকে একটি সাধারণ প্রকারে রূপান্তর করতে সঞ্চালিত হয়৷
- যদি উভয় অপারেন্ড পয়েন্টার প্রকারের হয় বা একটি যদি একটি পয়েন্টার টাইপ হয় এবং অন্যটি একটি ধ্রুবক অভিব্যক্তি যা 0 তে মূল্যায়ন করে, পয়েন্টার রূপান্তরগুলি একটি সাধারণ প্রকারে রূপান্তর করতে সঞ্চালিত হয়৷
- যদি উভয় অপারেন্ডই রেফারেন্স টাইপের হয়, তাহলে রেফারেন্স কনভার্সনগুলিকে সাধারণ টাইপে রূপান্তর করার জন্য সঞ্চালিত হয়।
- যদি উভয় অপারেন্ড টাইপ ভয়েড হয়, সাধারণ টাইপটি টাইপ ভ্যায়েড৷ ৷
- যদি উভয় অপারেন্ড একই ব্যবহারকারী-সংজ্ঞায়িত প্রকারের হয়, তবে সাধারণ প্রকারটি সেই প্রকার।
- যদি অপারেন্ডের বিভিন্ন প্রকার থাকে এবং অন্তত একটি অপারেন্ডের ব্যবহারকারী-নির্ধারিত প্রকার থাকে তাহলে সাধারণ প্রকার নির্ধারণ করতে ভাষার নিয়ম ব্যবহার করা হয়। (নীচে সতর্কতা দেখুন।)
উদাহরণ
নেমস্পেস std ব্যবহার করে#include <iostream> using namespace std; int main() { int i = 1, j = 2; cout << ( i > j ? i : j ) << " is greater." << endl; }
আউটপুট
এটি আউটপুট দেবে −
2 is greater.