Ternary অপেরেটর কিভাবে কাজ করে?

asked 21 Jan '15, 15:11

Minhaj%20Hasan's gravatar image

Minhaj Hasan
5942936


expression 1 ? expression 2 : expression 3

alt text

int main() { int num;

printf("Enter the Number : "); scanf("%d",&num);

(num%2==0)?printf("Even"):printf("Odd");

}

permanent link

answered 21 Jan '15, 15:22

ishahriyar's gravatar image

ishahriyar
9519

reverted 21 Jan '15, 15:23

টারনারি অপারেটর হচ্ছে একটি ইফ-এলস স্টেটমেন্টের সংক্ষিপ্ত রূপ। এটিই সি এর একমাত্র অপারেটর যার তিনটি অংশ থাকে (আর সব অপারেটর ইউনারি কিংবা বাইনারি)। এজন্য এতে দুইটি চিহ্ন ব্যবহার করা হয়ঃ ? এবং :। লেখার নিয়মটা এরকম:

condition ? expression-if-condition-is-true : expression-if-condition-is-false;

অনেক সময় ছোটখাট সিদ্ধান্ত গ্রহণের জন্য টারনারি অপারেটর কাজে লাগে। যেমন দুইটি সংখ্যা a, b এর মধ্যে কোনটা বড় জানার জন্য ইফ-এলস স্টেটমেন্ট হবে এমন:

if(a > b) {
    max = a;
} else {
    max = b;
}

অথচ টারনারি অপারেটর ব্যবহার করে এর সমতুল্য স্টেটমেন্ট হবে মাত্র এক লাইন:

max = a > b ? a : b;

টারনারি অপারেটরের মধ্যেকার এক্সপ্রেশনের জায়গাতেও টারনারি অপারেটর ব্যবহার করা যায়, যেমন তিনটি সংখ্যা a, b, c এর মধ্যে সবচেয়ে বড়টা বের করতেঃ

max = a > b ? (a > c ? a : c) : (b > c ? b : c);

তবে টারনারি স্টেটমেন্টের মধ্যে খুব বেশি কিছু না লেখাই ভালো, সেক্ষেত্রে ইফ-এলস ব্লক অনেক সহজবোধ্য।

সবশেষে টারনারি অপারেটরের একটা ইন্টারেস্টিং ব্যবহার - এক লাইনের একটা রিকার্সিভ ফাংশন দিয়ে দুটো সংখ্যার গসাগু বের করা (ইউক্লিডের পদ্ধতি ব্যবহার করে):

int gcd(int a, in b) {
    return a == 0 ? b : gcd(b % a, a);
}
permanent link

answered 21 Jan '15, 17:11

0605002's gravatar image

0605002
4907

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×212
×14
×1

question asked: 21 Jan '15, 15:11

question was seen: 1,654 times

last updated: 21 Jan '15, 17:11