144 জন দেখেছেন
"প্রোগ্রামিং" বিভাগে করেছেন (6,242 পয়েন্ট)

2 উত্তর

0 পছন্দ 0 জনের অপছন্দ
করেছেন (9 পয়েন্ট)

প্রোগ্রাম শেষ করার জন্য return 0 ব্যাবহার করা হয়।

0 পছন্দ 0 জনের অপছন্দ
করেছেন (227 পয়েন্ট)

আমরা যখন সি ল্যাঙ্গুয়েজে কোড লেখি তখন কোডের main() ফাংশন থেকে এক্সিকিউশন শুরু হয়। main() ফাংশন যদি এইভাবে ডিক্লেয়ার করা হয়:

int main()

তাহলে কম্পাইলার আশা করে যে ফাংশনটি যখন এক্সিকিউশন শেষ হবে তখন সে একটি ইন্টিজার রিটার্ন করবে। অর্থাৎ, ফাংশনের শেষে আমাদের কোনো একটা ইন্টিজার রিটার্ন করতে হবে। প্রচলিত নিয়মে 0 রিটার্ন করা হয়, প্রোগ্রামটি ঠিকভাবে কোনো সমস্যা ছাড়াই চলেছে সেটা বোঝানোর জন্য। তবে 0 ই যে রিটার্ন করতে হবে এমন কোনো কথা নেই। চাইলে যেকোন ইন্টিজার-ই রিটার্ন করা যায়।

বিস্তারিত উত্তর

সি ল্যাঙ্গুয়েজ

ISO/IEC 9899:1989 (C90) আদর্শ নীতিমালা অনুযায়ী নিচে উল্লেখিত তিনটি উপায়ে main() ফাংশন ডিক্লেয়ার করা যাবে।

int main(void)
int main(int argc, char **argv)
int main(int argc, char *argv[])

যেখানে দ্বিতীয় ও তৃতীয় লাইন টি সমতূল্য। কমান্ড লাইন থেকে ইনপুট নেওয়ার ক্ষেত্রে দ্বিতীয় অথবা তৃতীয়টি ব্যবহার করা হয়।

রিটার্নের ব্যপারে আদর্শ নীতিমালা হচ্ছে একটি প্রোগ্রাম তিন ধরনের মান রিটার্ন করতে পারবে,

0
EXIT_SUCCESS
EXIT_FAILURE

যেখানে দ্বিতীয় ও তৃতীয় মানটি stdlib.h ফাইলে #define করা আছে।

ISO/IEC 9899:1999 (C99) আদর্শ নীতিমালায় আরো যে শর্ত আরোপ করা হয়েছে তা হলো,

  • main() ফাংশনের ডিক্লেয়ারেশনে int শব্দটা অবশ্যই উল্লেখ করতে হবে। অর্থাৎ, main() না লিখে অবশ্যই int main() লিখতে হবে।
  • return 0 কথাটি চাইলে বাদ দেওয়া যাবে। যদি এই লাইনটা না লেখা হয় ডিফল্ট হিসেবে main() ফাংশন এক্সিকিউশনের শেষে 0 রিটার্ন করা হবে।

আমরা যদি চাই যে কিছুই রিটার্ন করবো না, সেক্ষেত্রে আমরা int main() এর পরিবর্তে void main() ব্যবহার করতে পারি। তবে int main() ব্যবহার করাটাই বেশি সমর্থিত ও উৎসাহিত।

সি++ ল্যাঙ্গুয়েজ

সি++ ল্যাঙ্গুয়েজেও C99 এর মতো তিনভাবে main() ফাংশন ডিক্লেয়ার করা যায়।

int main(void)
int main(int argc, char **argv)
int main(int argc, char *argv[])

সি++ এর আদর্শ নিয়মে void main() ব্যবহার করা একেবারেই নিষিদ্ধ, অর্থাৎ main() ফাংশনকে অবশ্যই ইন্টিজার রিটার্ন করতে হবে, তা না হলে কোড কম্পাইল হবে না।

এখন প্রশ্ন হচ্ছে main() ফাংশনের কিছু রিটার্ন করার প্রয়োজন কি?

আমরা যখন কোনো একটা কোড লিখে প্রোগ্রামটি চালাই, আমরা অপারেটিং সিস্টেমকে নির্দেশ দেই এবং অপারেটিং সিস্টেম প্রোগ্রামটিকে চালায়। প্রোগ্রামের এক্সিকিউশন যখন শেষ হবে তখন সে 0 মানটি অপারেটিং সিস্টেম এর কাছে রিটার্ন করবে। 0 নির্দেশ করে যে প্রোগ্রামটি সঠিক ভাবে চলেছে। আমরা অপারেটিং সিস্টেম অথবা কোনো কমান্ড লাইনের মাধ্যমে যেভাবেই প্রোগ্রাম চালাই না কেনো, প্রোগ্রাম কত মান রিটার্ন করলো সেটা গুরুত্বপূর্ন না। যেটা জানা গুরুত্বপূর্ণ সেটা হলো প্রোগ্রামটা ঠিকভাবে চলে শেষ হয়েছে কিনা। আদর্শ নিয়ম হচ্ছে,

  • প্রোগ্রাম ঠিকভাবে চলে এক্সিট করলে 0 রিটার্ন করা, এবং
  • প্রোগ্রাম চলাকালে কোনো এরর (মেমোরী ওভারফ্লো অথবা অ্যাড্রেসিং সংক্রান্ত এরর অথবা যে কোনো এরর) হয়ে যদি প্রোগ্রামটি মধ্যপথেই বন্ধ হয়ে যায় তাহলে, 0 ছাড়া যেকোন মান রিটার্ন করা।

আবার, কিছু কিছু ক্ষেত্রে রিটার্নকৃত মানটি গুরুত্বপূর্ণ হতে পারে। ধরা যাক, আমি এমন একটা প্রোগ্রাম করলাম যেটা আরো দশটা চাইল্ড প্রোগ্রামকে বিভিন্ন থ্রেডে চালায়। সেক্ষেত্রে, কোন থ্রেডের কোন প্রসেসটা কত মান রিটার্ন করলো তার উপর ভিত্তি করে সিদ্ধান্ত গ্রহন বা লজিক ইমপ্লিমেন্ট করার প্রয়োজন থাকতে পারে। আবার, ক্ষেত্র বিশেষে আমরা ভিন্ন ভিন্ন এররের ক্ষেত্রে ভিন্ন ভিন্ন রিটার্ন মান নিজেরা #define করে নিতে পারি। তাহলে, ওই প্রোগামের প্যারেন্ট প্রোগ্রাম থেকে আমরা সিদ্ধান্ত নিতে পারবো, প্রোগ্রামটা ঠিকমতো চলেছে কিনা এবং যদি ঠিকমতো না চলে থাকে তাহলে ঠিক কোথায় এরর টা হয়েছে।

সূত্র : http://ask.dimikcomputing.com/questions/15/return-0

টি উত্তর
২১ জানুয়ারি ২০১৯ "ক্যারিয়ার" বিভাগে উত্তর দিয়েছেন Ariful (৬৩৭৩ পয়েন্ট )
টি উত্তর

সম্পর্কিত প্রশ্নগুচ্ছ

0 টি উত্তর
1 উত্তর
28 মার্চ 2015 "প্রোগ্রামিং" বিভাগে জিজ্ঞাসা করেছেন psycho imran (10 পয়েন্ট)
1 উত্তর

288,373 টি প্রশ্ন

373,683 টি উত্তর

113,025 টি মন্তব্য

156,924 জন নিবন্ধিত সদস্য



বিস্ময় বাংলা ভাষায় সমস্যা সমাধানের একটি নির্ভরযোগ্য মাধ্যম। এখানে আপনি আপনার প্রশ্ন করার পাশাপাশি অন্যদের প্রশ্নে উত্তর প্রদান করে অবদান রাখতে পারেন অনলাইনে বিভিন্ন সমস্যার সমাধানের জন্য সবথেকে বড় এবং উন্মুক্ত তথ্যভাণ্ডার গড়ে তোলার কাজে।
* বিস্ময়ে প্রকাশিত সকল প্রশ্ন বা উত্তরের দায়ভার একান্তই ব্যবহারকারীর নিজের, এক্ষেত্রে কোন প্রশ্নোত্তর কোনভাবেই বিস্ময় এর মতামত নয়।
...