Header Ads

Header ADS

Increment operator in C

                   Increment operator in C
সাধারণত Increment operator তাদের  operand বা variable এর সাথে ১ যোগ করতে ব্যবহার করা হয়। 
সি ল্যাংগুয়েজ এ ২ ধরণের  Increment operator আছে -      



  1. Postfix increment ( var++);
  2. Prefix increment ( ++var)
Postfix increment - প্রথমে variable এ মান  assign করে তারপর increment  করে!

Prefix increment - প্রথমে increment করে তারপর variable এ মান  assign করে!


/* Increment and decrement operator in C

                 postfix increment - First assign, then increment
                 prefix increment - First increment, then assign! */

#include<stdio.h>
int main()
{
    int a,b;
    a = 13;

    a++;
    printf("%d\n\n",a); // 14

    ++a;
    printf("%d\n\n",a); // 15

    b = a++;
    printf("a and b = %d and %d\n\n",a,b); // a and b = 16 and 15

    b = ++a;
    printf("a and b = %d and %d\n\n",a,b); // a and b = 17 and 17




উপরের কোডে দেখা যাচ্ছে, প্রথমে a এর মান দেয়া হয়েছে 13। পরের লাইন এ সেটা কে postfix Increment করা হয়েছে। এবং সেটা প্রিন্ট করার পরে আমরা পেয়েছি 14!

পরবর্তীতে সেটাকে prefix increment করা হয়েছে। যেহেতু postfix Increment করার পরে a এর মান ছিল 14, সুতরাং prefix increment করার পরে a  এর মান আরো ১ বাড়বে। সুতরাং প্রিন্ট করার পরে আমরা পাব 15.


এই ২ টি প্রিন্ট statement পর্যালোচনা করে prefix increment এবং postfix Increment এর পার্থক্য তেমনভাবে বুঝা যাচ্ছে না। 

যাই হোক এই ২ টি প্রিন্ট statement এর পরে আমাদের a  এর মান কিন্তু  15।


এর পরের লাইনে দেখা যাচ্ছে  (b = a++;)
এখানে  a কে আবারো  postfix Increment করা হয়েছে এবং এর মান টা আরেকটি  variable b তে assign করা হয়েছে। এখন যদি আমরা  a এবং b প্রিন্ট করি তাহলে আউটপুট কি আসবে বলুন তো?

আউটপুট আসবে a এর মান 16 এবং b এর মান 15!!

এখন প্রশ্ন হলো কেন এরকম আউটপুট আসলো? এরকম আসার কারণ হচ্ছে, postfix Increment  এর সুত্র থেকে আমরা জানি সেটা প্রথমে প্রথমে variable এ মান  assign করে তারপর increment  করে!  অর্থাৎ a এর  মান আগে যা ছিলো সেটা প্রথমে b তে assign হবে। সুতরাং, এখন  যদি আমরা b প্রিন্ট করি তাহলে increment করার আগে a  এর মান যা ছিল তাই অর্থাৎ 15 হবে, আর a  যেহেতু increment হচ্ছে সুতরাং a  এর মান 16 প্রিন্ট করবে।

 প্রিন্ট statement এর পরে এখন  আমাদের  a  এর মান  16।

এর পরের লাইনে দেখা যাচ্ছে  (b = ++a;) 
এখানে  a  কে prefix increment করা হয়েছে । এখন যদি আমরা a  এবং b প্রিন্ট করি তাহলে আউটপুট কি আসবে বলুন তো?

আউটপুট আসবে a  এর মান 17 এবং b এর মান 17!!

এরকম আসার কারণ হচ্ছে,  prefix increment  এর সুত্র থেকে আমরা জানি সেটা প্রথমে increment করে তারপর variable এ মান  assign করে! অর্থাৎ আমাদের a এর মান ছিল 16. এখন সেটা b  তে assign
করার আগেই তার মান 1 বাড়িয়ে নিবে অর্থাৎ increment করে নিবে। তাই এখন  b  এবং a  প্রিন্ট করলে উভয় এর মান ই 17 হবে।






4 comments:

Powered by Blogger.