আমরা ফাংশনে বিভিন্ন আর্গুমেন্ট পাস করি। এখন মনে প্রশ্ন আসতে পারে, ফাংশন প্যারামিটারের ইভ্যালুয়েশন অর্ডার কী? বাম থেকে ডান নাকি ডান থেকে বাম?
ইভ্যালুয়েশন অর্ডার চেক করতে একটি সিম্পল প্রোগ্রাম ব্যবহার করব। কিছু প্যারামিটার পাস করা হয়েছে। আউটপুট থেকে বুঝা যাবে কীভাবে ইভ্যালুয়েট হয়েছে।
উদাহরণ কোড
#include <stdio.h>
void test_function(int x, int y, int z) {
printf("The value of x: %d\n", x);
printf("The value of y: %d\n", y);
printf("The value of z: %d\n", z);
}
int main() {
int a = 10;
test_function(a++, a++, a++);
}
আউটপুট
The value of x: 12 The value of y: 11 The value of z: 10
এই আউটপুট থেকে ইভ্যালুয়েশন সিকোয়েন্স সহজে বোঝা যায়। প্রথমে z নেওয়া হয়েছে, তাই সেটি ১০ ধারণ করে, তারপর y নেওয়া হয়েছে, সেটি ১১, এবং শেষে x নেওয়া হয়েছে, মান ১২। অর্থাৎ আর্গুমেন্টগুলো ডান থেকে বাম (Right-to-Left) ইভ্যালুয়েট হয়েছে।
নোট: সি স্ট্যান্ডার্ডে ফাংশন আর্গুমেন্ট ইভ্যালুয়েশন অর্ডার অনির্দিষ্ট (unspecified)। এটি কম্পাইলার ও আর্কিটেকচারের ওপর নির্ভর করতে পারে।