আমরা প্রথমে একটা কোড স্নিপেট দেখি ।
#include
int main(){
int a=1;
printf("%d%d",a++,++a);
return 0;
}
Output : 23
এর আউটপুট ২,৩ কেন ? এ ধরনের স্টেট্মেন্ট এ সব সময় রাইট টু লেফট কাজ করবে , তার মানে প্রথমে ++a এবং a++ কাজ করবে a এর ইনিশিয়াল মান ১। তাহলে ++a মান হয়ে গেল ২ । আবার এই ২ মান নিয়ে a++ এর কাছে যাবে । ইনিশিয়াল ভালুএ ২ ই থাকবে কিন্তু পরে ১ বেড়ে গিয়ে ৩ হবে, কিন্তু প্রিন্ট ২ ই হবে । তাহলে a এর মাক্স মান হচ্ছে ৩ , প্রি ইঙ্ক্রিমেন্ট এর কাজ হচ্ছে ইভালুয়েশন শেষে মাক্স ভালুএ টাই বসবে , তাহলে ++a এর মান হবে ৩ ।
তাহলে ফাইনাল আউটপুট হল ঃ ২,৩
আমরা আরও একটি উদাহরণ দেখি ,
#include
int main() {
int a=1;
printf("%d%d%d%d",a++,a++,++a,a++);
return 0;
}
output: 4351
....
এখন আমরা একটু দেখি কিভাবে আউটপুট ৪৩৫১ হল ।
আমরা জানি এটা রাইট টু লেফট কাজ করে । তাহলে , a++ এ আসবে , এটি যেহেতু পোস্ট ইঙ্ক্রিমেন্ট সুতরাংএর মান ১ ই থাকবে এবং পরে ১ ইঙ্ক্রিমেন্ট হবে । এর পরে আসবে ++a এর কাছে, যেহেতু ১ ইঙ্ক্রিমেন্ট হয়ে a এর মান এখন ২ । আর ++a হল প্রি ইনক্রিমেন্ট তাই আগেই ভ্যালু বেড়ে যাবে । সুতরাং a এর ভেলু এখন ৩ । এর পরে a++ , তারমানে পরে ভ্যালু ইনক্রিমেন্ট হবে । ৩ ই থাকবে । এর পরে a++ , এখন a++ এর ভ্যালু ৪ হবে এবং পরে ইনক্রিমেন্ট হবে । এখন আউটপুট বের করার পালা ।
এখন প্রথমে আমাদের দেখতে হবে a এর ম্যাক্স ভ্যালু কত? আমরা দেখতে পাচ্ছি a এর ম্যাক্স ভ্যালু ৫ । আর এই ৫ বসবে যত গুলা প্রি ইঙ্ক্রিমেনট আছে । তাহলে , আউটপুট দাড়ায় , ৪৩৫১

0 Comments