#include<stdio.h>

int main()
{
    int x=10, y=15, z=2,i;
    i=x<y<z;
    printf("%d", i);

    return 0;
}

এই কোডে z এর মান মাইনাস অসীম থেকে +১ পর্যন্ত সকল মানের জন্যে আউটপুট শূন্য (০) আসে। কিন্তু +২ থেকে ধনাত্নক অসীম পর্যন্ত মান +১ আসে। কেন ?

asked 15 Apr '15, 11:47

Onimekh%20Cse's gravatar image

Onimekh Cse
111

edited 15 Apr '15, 12:43

__salman__'s gravatar image

__salman__ ♦♦
1.1k211


সি ল্যাঙ্গুয়েজে যখন comparison operator (==, !=, <, >, <=, >=) ব্যবহার করে দুটি মানের তুলনা করা হয়, তখন সেই এক্সপ্রেশনের একটা মান থাকে। এক্সপ্রেশনটি সত্য হলে মান হয় 1, আর মিথ্যা হলে হয় 0। এখানে i = x < y < z; এই স্টেটমেন্টটি আসলে কম্পাইল হয় এভাবেঃ i = ((x < y) < z);। অর্থাৎ আগে x < y এর মান নির্ণয় হয়, তারপর সেই মানের সাথে z এর তুলনা করা হয়। এখানে x এর মান 10, y এর মান 15 এবং 10 < 15 সত্য, কাজেই এই এক্সপ্রেশনের মান হল 1। এর সাথে যখন z এর তুলনা করা হয়, তখন z এর মান 2 এর কম হলে সেটা হয় মিথ্যা, আর 2 এর সমান বা বেশি হলে হয় সত্য। এজন্যই এই দুই ক্ষেত্রে z এর মান 0 আর 1 হয়।

#include<stdio.h>

int main()
{
    int x=10, y=15, z=2,i, j, k;

    i = x < y < z;
    printf("%d\n", i); // prints 1

    j = x < y;
    printf("%d\n", j); // prints 1

    k = j < z;
    printf("%d\n", k); // prints 1

    return 0;
}

ideone link

permanent link

answered 15 Apr '15, 16:12

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:

×4

question asked: 15 Apr '15, 11:47

question was seen: 580 times

last updated: 15 Apr '15, 16:12