সি ++ এ ফাংশন ঘোষণার পরে কি সেমিকোলন (';') দরকার নেই?


174

আমি সম্প্রতি একটি মধ্যবর্তী প্রোগ্রামিং পরীক্ষা দিয়েছি এবং আমার যে প্রশ্নটি ভুল হয়েছে তার মধ্যে একটি ছিল:

একটি কার্য ঘোষণার পরে একটি সেমিকোলন (';') দরকার হয় না।

সত্য অথবা মিথ্যা.

আমি "মিথ্যা" বেছে নিয়েছি (এবং আমি ভুল হলে দয়া করে আমাকে সংশোধন করুন কারণ আমি মনে হয় আমি পাগল হয়ে যাচ্ছি), একটি ফাংশন ডিক্লেয়ারেশন হ'ল সংজ্ঞাটির আগে আপনি যা লিখেন (কোডের শীর্ষে) তাই সংকলকটি ফাংশনটি জানে এমনকি এটি কল করার আগে কল করুন, এবং একটি ফাংশন সংজ্ঞা যা ফাংশনটিকে সামগ্রিকভাবে তৈরি করে।

অর্থাত,

ঘোষণা:

int func();

সংজ্ঞা:

int func() {
  return 1;
}

এর উত্তর কি ভুল হওয়া উচিত নয়?


41
একটি সংজ্ঞা এছাড়াও একটি ঘোষণা। তবে আমি বলব আপনার উত্তরটি সঠিক ছিল।

216
এটি একটি কৌতূহলপূর্ণ প্রশ্ন
ফোনেট্যাগার

40
আমি সবসময় প্রশ্নগুলি খুঁজে পাই, এর ফলস্বরূপ দ্বৈত-নেতিবাচক, বিভ্রান্তিকর। আমার মনে, এই জাতীয় প্রশ্নগুলি শিক্ষার্থীদের ট্রিপ করার জন্য তৈরি করা হয়েছে। প্রশ্নটি কেন নিম্নলিখিত উপায়ে তৈরি করা যায়নি: "একটি ক্রমিক ঘোষণার পরে একটি সেমিকোলন (';') সর্বদা প্রয়োজন True সত্য বা মিথ্যা?" : /
আলগিরদাস প্রিডিয়াস

18
@ ফোনেট্যাগার এই সমস্ত বিভ্রান্তিটি দেখায় যে প্রশ্নটি কতটা খারাপভাবে শব্দযুক্ত।
ফ্রান্সোইস অ্যান্ডরিয়াক

34
হ্যানলনের রেজার পরামর্শ দেয় যে পরীক্ষার লেখক "ঘোষণা" এবং "সংজ্ঞা" মিশ্রিত করেছিলেন।
স্নেফটেল

উত্তর:


161

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


10
আমি যুক্তি দিয়েছিলাম যে আপনি যে কারণটি দিয়েছেন তার কারণে সত্যটি সঠিক নয়। যদি সেমিকোলনের প্রয়োজন হয় এমন কেসগুলি থাকে তবে তা মিথ্যা (বা সত্য নয়)। সত্যটি আমার কাছে পরম, যদি প্রয়োজন হয় এমন স্পষ্ট কেস থাকে তবে আপনি সত্য বলতে পারবেন না।
আমি ফানবল

16
@ আইফুনবল ভাল যুক্তি। বোকা স্বভাবজাত ভাষা। বাক্য; যেমন পড়া যায় "একটি সেমিকোলন ( '') একটি ফাংশন ঘোষণার পর প্রয়োজন হয় না" "সেমিকোলণ ( ';') করা হয় না (কখনও) একটি ফাংশন ঘোষণার পর প্রয়োজন" বা হিসাবে "একটি সেমিকোলন ( ';' ) ফাংশন ঘোষণার পরে (সর্বদা) প্রয়োজন হয় না "। কোনও ব্যাখ্যা বেছে নেওয়ার ক্ষেত্রে বিবৃতিটিকে সত্য বা মিথ্যা জড়িত হিসাবে যোগ্য করে তোলা উচিত। কঠোরভাবে প্রশ্ন করা প্রশ্নটি অস্পষ্ট এবং তাই এর স্পষ্ট উত্তর নেই।
পিটার -

6
@ আইফুনবল এটি কারণ যে "ঘোষণা", কোনও প্রসঙ্গ নেই এবং কোনও বক্তব্য নেই যে আমরা ভাষা আইনজীবি, সাধারণত "একটি অ-সংজ্ঞায়িত ঘোষণা" বলতে বোঝা যায়। প্রশ্ন ছিল অন্যায্য।
23:23

2
পরীক্ষার যে বিষয়বস্তু পরীক্ষা করা হচ্ছে তা জানে এমন কারও কাছে অস্পষ্ট যে কোনও পরীক্ষার প্রশ্নটি বগড।
নাট

2
আমাদের কাছে ইংরেজী ভাষায় একটি অপরিজ্ঞাত আচরণের ধারাটি যুক্ত করা দরকার বলে মনে হচ্ছে
নিক মার্টিন

147

"একটি সংজ্ঞা এছাড়াও একটি ঘোষণা" জিনিস ছাড়াও, নিম্নলিখিতটি আইনী সি ++:

int f(), g();

এটি দুটি ফাংশন ঘোষণা করে fএবং gউভয় যুক্তি ছাড়াই এবং প্রত্যাবর্তনের ধরণের সাথে int, তবে সংজ্ঞাটি fসেমিকোলন দ্বারা (তত্ক্ষণাত) অনুসরণ করা হয় না। তেমনি, এটি আইনী:

int f(), i = 42;

তবে প্রকৃতপক্ষে এই ক্ষেত্রে সেমিকোলনটি পুরোপুরি বাদ দেওয়ার অনুমতি নেই, সুতরাং এটি যদি কিছুটা অবাক করা হয় তবে যদি সেটিকে নীচের সেমিকোলন ছাড়াই ঘোষণার উদাহরণ হিসাবে নেওয়া হয়। আসলে, নিম্নলিখিতটি অবৈধ:

void *p, f() {}

একটি (নিখুঁত) ফাংশন ঘোষণা ব্যতীত অন্য কোনও ঘোষণা বা সংজ্ঞা একই ধরণের নির্দিষ্টকরণের সাথে ফাংশন সংজ্ঞা সংযুক্ত করা যায় না । (যদি এটি আইনী হয় তবে এটি a এবং a উভয়ই সংজ্ঞায়িত করবে ))void *pvoid f() {}

যাই হোক না কেন, এটি মনে হয় এটি একটি "গোটচা" ধরণের প্রশ্ন যা কোনও মধ্যবর্তী প্রোগ্রামিং পরীক্ষায় হওয়া উচিত নয়।

(ওহ, যাইহোক, দয়া করে আসলে কোডটি লিখবেন না int f(), i = 42;))


2
কোনও ফাংশনের ধরণ সংজ্ঞায়িত করতে টাইপয়েড ব্যবহার করা এবং এটি একবারে অনেকগুলি কার্যকারিতা ঘোষণা করার জন্য এটি ব্যবহার করা সম্ভব, যেমন typedef int fooProc(int); fooProc a,b.c.d.e;আমি নিশ্চিত নই যে ফ্লপি-ড্রাইভ-ভিত্তিক সংকলকগুলির জন্য স্ট্যান্ডার্ড শিরোনামগুলি কেন এটি পুনরায় করেন নি not দিন, যেহেতু আমি মনে করব এটি শিরোনামের ফাইলগুলিকে অনেক ছোট হতে পারে এবং প্রক্রিয়াটি দ্রুত করতে পারে।
সুপারক্যাট

এছাড়াও বিবেচনা করুন int f(int(&g)(),int(*h)()){return g()+h();}এটির তিনটি ক্রিয়াকলাপের ঘোষণাগুলি রয়েছে যার একটির পরে খোলা কোঁকড়ানো ধনুর্বন্ধনী, অন্যটি কমা দ্বারা এবং তৃতীয়টি নিকট বন্ধনী দ্বারা অনুসরণ করা হয়।
ডেভিড হামেন

1
@ ডেভিডহ্যামেন: এটি ব্যতীত অন্য কোন কার্যাদি ঘোষণা করে না int f(stuff)। এমনকি ফাংশনের সুযোগেও, ফাংশনটির gপ্রকারের রেফারেন্সের একটি স্বয়ংক্রিয় পরিবর্তনশীল , এবং hএটি ফাংশনটির জন্য একটি পয়েন্টার
পিটার কর্ডেস

83

অন্যান্য উত্তর এবং মন্তব্যগুলি বিভিন্ন উপায়ে কল করে যে এটি একটি ভয়াবহ, বিভ্রান্তিকর এবং খারাপভাবে লিখিত প্রশ্ন। তবে আরও একটি সমস্যা রয়েছে যা এখনও অন্য কেউ সনাক্ত করতে পারেনি। প্রশ্ন হচ্ছে:

একটি কার্য ঘোষণার পরে একটি সেমিকোলন (';') দরকার হয় না। সত্য অথবা মিথ্যা.

ঠিক আছে, আসুন একটি ফাংশন ঘোষণা দেখুন:

int func();       /* */
/*           ^       */
/*           |       */
/* That whitespace is "after the function declaration". */

পুরো বিষয়টি হ'ল ঘোষণা । ঘোষণা করা হয় না int func()এবং তারপর দ্বারা অনুসরণ একটি ;। ঘোষণাপত্রটি হ'ল int func();এবং তারপরেই সাদা স্থান।

সুতরাং, প্রশ্নটি হল: ঘোষণার পরে একটি সেমিকোলন প্রয়োজন ? অবশ্যই না. ঘোষণাপত্রে এর মধ্যে ইতিমধ্যে একটি সেমিকোলন রয়েছে যা এটি বন্ধ করে দিয়েছে। ঘোষণার পরে একটি সেমিকোলন অর্থহীন হবে। বিপরীতে, একটি কার্য ঘোষণার পরে একটিint func(); ; সেমিকোলন হবে ।

প্রশ্নটি প্রায় অবশ্যই প্রশ্নটি জিজ্ঞাসা করার উদ্দেশ্যেই করা হয়েছিল "সত্য বা মিথ্যা: একটি ফাংশন ঘোষণার সর্বশেষ টোকেন সর্বদা একটি সেমিকোলন" তবে এটি যে প্রশ্নটি তারা লিখেছিল তা নয়, কারণ কুইজের লেখক সমস্যাটি সম্পর্কে স্পষ্টভাবে ভাবছিলেন না।

আমার পরামর্শ হ'ল প্রোগ্রামিং ভাষার কুইজগুলি পুরোপুরি এড়ানো avoid তারা বেশ ভয়ঙ্কর।


মজার ঘটনা, যখন আমরা বিষয়টিতে থাকি। সি # তে, এগুলি সমস্ত আইনী:

class C {}
class D {};
struct E {}
struct F {};

সি # তে একটি শ্রেণি বা স্ট্রাক্ট ঘোষণা আপনার বিবেচনার ভিত্তিতে একটি সেমিকোলনে শেষ হতে পারে বা নাও হতে পারে। এই অদ্ভুত সামান্য বৈশিষ্ট্যটি সি / সি ++ প্রোগ্রামারদের সি # তে আগতদের সুবিধার জন্য যুক্ত করা হয়েছিল যারা তাদের নখদর্পণে রয়েছে যে টাইপের ঘোষণাগুলি অর্থহীন সেমিকোলনে শেষ হয়; এই অভ্যাস থাকার জন্য ডিজাইন দল তাদের শাস্তি দিতে চায়নি। :-)


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
স্যামুয়েল লিউ

25

আপনিও এর মতো কোনও কার্য ঘোষণা করতে পারেন:

int func(){
    return 1;
}

বিবৃতিটি খুব অস্পষ্ট। সঠিক উত্তরটি হওয়া উচিত: এটি কীভাবে আপনি কার্যটি ঘোষণা করবেন তার উপর নির্ভর করে।

যাইহোক, আমিও মিথ্যা বেছে নিয়েছি এবং সম্ভবত আপনি কারও কাছে প্রশ্নটি রিপোর্ট করতে পারেন।


3
যাইহোক, জিনিসটি ব্যক্তিগত স্তরে রাখবেন না। গুরুত্বপূর্ণ বিষয়টি হ'ল আপনি বুঝতে পেরেছিলেন যে কোনও ফাংশন ঘোষণা-সংজ্ঞা কীভাবে কাজ করে, তাই এটি সম্পর্কে খুব বেশি চিন্তা করবেন না, কেবল নিশ্চিত হয়ে নিন যে প্রশ্নটি কমপক্ষে পরীক্ষা করা হবে এবং চালিয়ে যাবেন
লুকা করসিনি

11
একেবারে। সত্যি বলতে, আমি প্রশ্নটি ভুল হওয়া থেকে ফাংশন ডিক্লেয়ারেশন-সংজ্ঞা সম্পর্কে আরও শিখেছি যা আমি এটি সঠিকভাবে অর্জন করতে চাইতাম।
লোগান

1
@ লোগান খুব বেশি চিন্তা করবেন না। আপনার যদি প্রয়োজন হয় এমন কোনও ফাংশন কীভাবে লিখতে এবং পড়তে হয় তা যদি আপনি জানেন। আমি ব্যক্তিগতভাবে এই ধরণের প্রশ্নগুলিকে ঘৃণা করি যা ১ টি ভালভাবে সংজ্ঞায়িত হয় না 2. সিনট্যাক্স সম্পর্কে আপনার তাত্ত্বিক জ্ঞান পরীক্ষা করুন। আমার কাছে এটি পেশির স্মৃতির মতো। আমি যখন লিখি প্রতিটি অঙ্ক অনায়াসেই চাবিটি যাবার কথা বলে মনে হয়, তবে আপনি যদি আমাকে কী কীগুলির কী কী তা সম্পর্কে একটি পরীক্ষা দিয়ে থাকেন তবে শারীরিকভাবে ক্রিয়াটি
সম্পাদন

2
... সাধারণ বাক্য গঠন (যেমন কোনও ফাংশনের মতো) আপনার কাছে দ্বিতীয় প্রকৃতি হয়ে উঠবে। এবং আপনি যখন এটিকে গোলমাল করবেন কারণ আপনি কেবলমাত্র ভাষা পরিবর্তন করেছেন, ভাল ... ইন্টেলিজেন্স এবং সিনট্যাক্স হাইলাইটিং দ্রুত এবং দক্ষ সমাধানের জন্য তৈরি করে। আপনার সময় এবং শক্তি আরও দরকারী কিছু বিনিয়োগ করুন।
বলভ

20

একটি কার্য ঘোষণার পরে একটি সেমিকোলন (';') দরকার হয় না।

সত্য অথবা মিথ্যা.

সত্য । কোনও ঘোষণার পরে একটি সেমিকোলনের প্রয়োজন হয় না। না কোন সংজ্ঞা পরে। না কোনও বিবৃতি দেওয়ার পরে।

সেকশন 7 [dcl.dcl] এর বাক্য গঠন যেমন নির্দিষ্ট করে, তেমন অনেক ধরণের ঘোষণার একটি সেমিকোলন দিয়ে শেষ করতে হয়। তবে এর পরে আর দ্বিতীয়টি লেখার দরকার নেই।


1
আমি দেখতে পাচ্ছি যে এরিক লিপার্ট ইতিমধ্যে এই বিষয়টিতে তর্ক করেছিলেন। আমি অনুমান করি যে সমস্ত upvotes আমাকে এটিকে উপেক্ষা করেছে। নির্দ্বিধায় সেখানে আপনার ভোট দিতে।
মার্ক ভ্যান লিউউইন

খুব সুন্দর যে কোনও প্রশ্ন জিজ্ঞাসা করে, "এক্স সর্বদা সত্য: সত্য বা মিথ্যা?" উত্তর "মিথ্যা" পেতে চলেছে। মুরগি, কোথাও সেমিকোলন থাকার দরকার নেই ; সংকলক অভিযোগ করতে পারে এবং আপনার প্রোগ্রামটি সংকলন করতে অস্বীকার করতে পারে, তবে এটি সম্ভবত পৃথিবীর শেষ; আমি এটিকে মৌলিক প্রয়োজন বলব না । ;)
কুক্সপ্লসোন

@ কুইকপ্লসোন যদি সংকলক আপনার প্রোগ্রামটিকে প্রত্যাখ্যান করে তবে আপনার প্রোগ্রামটিতে কোনও কার্যকারণ সংক্রান্ত ঘোষণা নেই :)
বেন মিলউড

6

এটি নির্ভর করে আমরা ফাংশনটি ঘোষণা করছি বা সংজ্ঞা দিচ্ছি কিনা। আমরা যদি ফাংশনটি ঘোষণা করছি, আমাদের সেমিকোলন ( ;) অন্তর্ভুক্ত করতে হবে এবং আমরা যদি ফাংশনটি সংজ্ঞায়িত করতে পারি তবে সেমিকোলনের প্রয়োজন নেই।

একটি ঘোষণা এরকম:

int add(int, int);

এবং একটি সংজ্ঞাটি এরকম:

int add(int a, int b)
{
    // ...
}

10
এই উত্তরের সমস্যাটি হ'ল এটি সুপারিশ করে যে সংজ্ঞা এবং ঘোষণা পারস্পরিক একচেটিয়া। আসলে, প্রতিটি সংজ্ঞা একটি ঘোষণা; সংজ্ঞাগুলি ঘোষণার একটি উপসেট।
এমসাল্টার

6

যদিও আমি অন্যান্য উত্তরগুলির সাথে প্রায় সকলের সাথে একমত হয়েছি, উল্লেখ করে যে প্রশ্নটি খুব অস্পষ্টভাবে বর্ণিত, এবং আপনার উত্তরটি প্রযুক্তিগতভাবে সঠিক, আমাকে একটি ভিন্ন দৃষ্টিকোণ দেওয়ার অনুমতি দিন:

এইভাবে আমি তাদের সবসময় ডাকি:

void func();  // The function prototype

...

void func()
{
    // The function definition
}

আমি ধরে নিচ্ছি এই শব্দটিকে সামনে রেখে প্রশ্নটি তৈরি হয়েছিল।

সংজ্ঞা এবং ঘোষণা উভয়ই আমার দৃষ্টিতে একই ধারণা। "আমি x = y সংজ্ঞা দিয়েছি" == "আমি এক্স = y ঘোষণা করি"।

তবে অবশ্যই, ফাংশন প্রোটোটাইপ (উপরে) এবং ফাংশনের আসল সংজ্ঞা মধ্যে একটি বড় পার্থক্য রয়েছে।


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

ডেভিড এস: হ্যাঁ, অবশ্যই এতে যুক্তিগুলির সংখ্যা এবং ধরণও থাকবে তবে আমি সংক্ষিপ্ততার জন্য তাদের বাদ দিয়েছিলাম (নোট করুন যে আসল ফাংশন ঘোষণায় কোনও যুক্তিও নেই)। তবে, আপনি যখন পুরো ফাংশন ঘোষণাকে প্রোটোটাইপ বলে তখন আমি সত্যিই তাতে একমত নই। আমি উইকিপিডিয়াটির উদ্ধৃতি দিয়েছি: "একটি ফাংশন প্রোটোটাইপ বা ফাংশন ইন্টারফেস হ'ল একটি ফাংশনের একটি ঘোষণা যা ফাংশনের নাম এবং টাইপ স্বাক্ষর (আরটি, প্যারামিটারগুলির ডেটা ধরণের এবং রিটার্নের ধরণ) নির্দিষ্ট করে তবে ফাংশনটির মূল অংশ বাদ দেয়" "
ওপাইফেক্স

@ ডেভিডস: সি ++ এ, ফাংশন ঘোষণাগুলি সর্বদা প্রোটোটাইপ (বা সংজ্ঞা) হয় এবং void func();এর ঠিক সমান হয় void func(void);। এটি সি থেকে খুব আলাদা , যেখানে void func();সংকলকটি আরগগুলি সম্পর্কে কিছুই বলে না এবং এটি একই জিনিস নয় void func(void);। পরবর্তী প্রোটোটাইপ বা সংজ্ঞা একটি ভাল ধারণা আছে, অন্যথায় আহ্বানকারী ডিফল্ট ARG প্রচার আবেদন করতে হয়েছে (যেমন ভাসা -> ডবল, এবং সংকীর্ণ পূর্ণসংখ্যা প্রকারের int। Variadic ফাংশন args জন্য একই নিয়ম।)
পিটার Cordes

আমার ক্ষমাপ্রার্থী, আমি এখানে সি সম্পর্কিত কিছু দেখেছি এবং ভাষার পরিবর্তনের বিষয়টি লক্ষ্য করিনি। আমি আমার মন্তব্য পরিষ্কার করার স্বার্থে মুছে ফেলব না, তবে এটি প্রত্যাহার করে বিবেচনা করব।
ডেভিড এস

6

এটি একটি দুঃখের বিষয় যা আপনি প্রশ্নটি নিয়েছিলেন তা "সরাসরি পরে" বলে না। আমরা উদাহরণস্বরূপ এটি লিখতে পারে:

int func()  /* My function */ ;

অথবা আমি লিখতে পারি:

int func()
int a = 42;

প্রথম ক্ষেত্রে সেমিকোলন সরাসরি ঘোষণার পরে নয় , তবে এটি ঠিক থাকবে।

দ্বিতীয় ক্ষেত্রে "ঘোষণার পরে" অর্ধকোলন রয়েছে তবে সরাসরি পরে নয় after

আমি মনে করি এরিক লিপার্টের উত্তরের সঠিক ধারণা আছে ।

"ইংরাজীতে কোনও বাক্য শেষ হওয়ার পরে কোনও পিরিয়ড থাকা উচিত?" বলার মতো এটি। যুক্তিযুক্তভাবে, একটি বাক্য ইতিমধ্যে শেষ হয় (অন্যথায় এটি একটি বাক্য হবে না) এবং তাই বাক্য পরে একটি সময়কাল হওয়া উচিত নয় ..


4
খুশী হলাম। অতিরিক্ত মেয়াদ সহ সেই বাক্যটি শেষ করা। আমি আপনি কি কি আছে দেখতে।
ডেভিড এস

2
int func() int a=42;সংকলন করে না আপনার কমা দরকার, অন্য নয় int। এর এক দিন আগে @ অর্ণের উত্তর পোস্ট করা দেখুন। এই উত্তরের একমাত্র নতুন জিনিসটি ইংরেজী বাক্যগুলির সাদৃশ্য সহ শেষ অনুচ্ছেদ।
পিটার

1
দ্বিতীয় উদাহরণ সংকলিত আমি বলিনি। আমি উল্লেখ করছিলাম যে এই ঘোষণাটি অস্পষ্ট ছিল "পরে" একটি সেমিকোলনের প্রয়োজন ছিল। ঘোষণার পরে আমার উদাহরণটিতে একটি সেমিকোলন ছিল তবে এটি সংকলন করে না
নিক গ্যামন

1
ত্রুটি বার্তাগুলিতে এই একই সমস্যা দেখা দেয়; সি # এর একটি প্রিয় উদাহরণ হ'ল " একটি প্যারামিটার পরামিতি আনুষ্ঠানিক প্যারামিটার তালিকার শেষ প্যারামিটার হতে হবে "। এখন, ধরুন পরিবর্তে আমি বলেছিলাম "একটি ফ্রব অবশ্যই গ্লোব তালিকার শেষ গ্লোব হওয়া উচিত"। এর অর্থ কি (1) প্রতিটি গ্লোব তালিকার শেষে একেবারে ঠিক একটি ফ্রব থাকে, যেমন প্রতিটি প্রশ্নের শেষে হ'ল একটি প্রশ্ন চিহ্ন থাকে (2) একটি গ্লোব তালিকার অনেকগুলি ফ্রব থাকতে পারে তবে এর যদি এক বা একাধিক ফ্রোব থাকে , শেষ আইটেমটি অবশ্যই একটি ফ্রব হওয়া উচিত, যেমন একটি সমান সংখ্যার যে কোনও সংখ্যা 02468 হতে পারে তবে এর মধ্যে একটি অবশ্যই শেষ, বা ...
এরিক লিপার্ট

... (3) একটি গ্লোব তালিকার শূন্য বা একটি ফ্রোব থাকতে পারে, এবং যদি এটি থাকে তবে এটি শেষে আসে? আপনি যদি প্রসঙ্গটি জানেন না তবে আমি মনে করি যে (1) সবচেয়ে বোধগম্য ব্যাখ্যা তবে "প্যারামি প্যারামিটার" এর ক্ষেত্রে (3) সঠিক ব্যাখ্যা। প্রোগ্রামিং ভাষার উপাদানগুলির অনেক অনানুষ্ঠানিক বর্ণনার একটি সম্পত্তি রয়েছে যা আমার প্রযুক্তিগত সম্পাদক বন্ধুরা "COIK" বলে ডাকে - সাফ করুন কেবল যদি জানা থাকে। আপনি যদি ইতিমধ্যে উপাদানটি পুঙ্খানুপুঙ্খভাবে বুঝতে না পারেন তবে এর একটি বিবরণ আপনার পক্ষে অকেজো, তবে আপনি যদি ইতিমধ্যে এটি পুরোপুরি বুঝতে পেরে থাকেন তবে আপনার বিবরণ দরকার নেই!
এরিক লিপার্ট

4

আপনি ;কেবল প্রোটোটাইপগুলির জন্য ব্যবহার করতে পারেন ।


4

এটি একটি জটিল প্রশ্ন, তবে তারা ঘোষণা শব্দটি ব্যবহার করেছিল যার অর্থ এইরকম:

int example();

সুতরাং এই ক্ষেত্রে এটি সত্য।

যদি তারা প্রয়োগ শব্দটি ব্যবহার করত তবে এটি মিথ্যা হত।


2

সেমিকোলন (;) সংকলককে বলতে ব্যবহৃত হয় যে এই সেমিকোলনের (;) পরে একটি নতুন বিবৃতি শুরু হয়।

সুতরাং আমি মনে করি কেবলমাত্র একটি ক্রিয়াকলাপের ঘোষণার সময় সেমিকোলনটি প্রয়োজনীয়; সুতরাং আমার মতে উত্তরটি সত্য হবে।


ঘোষণা যদিও বিবৃতি নয়।
হলিব্ল্যাকগ্যাট

তবে ফাংশন ঘোষণার পরে, আমরা সংকলক ব্যবহার করে কোডের একটি নতুন লাইন সম্পাদন করছি। সুতরাং আমি মনে করি কোড কম্পাইলারের একটি নতুন লাইন কার্যকর করার আগে জানতে হবে যেখানে কোডের আগের লাইনটি শেষ হয় কেবল তখনই একটি সংকলক স্থানীয় কোড উত্পন্ন করতে পারে (অর্থাত্ 0101)।
যতিন্দর

2

যখন মূল () এর আগে ফাংশনগুলি সংজ্ঞায়িত করা হয় :

  • সেমিকোলনের দরকার নেই কারণ ফাংশনটি ইতিমধ্যে সংজ্ঞায়িত

মূল () এর পরে যখন কার্যগুলি সংজ্ঞায়িত করা হয় :

  • সেমিকোলন দরকার কারণ আপনি সেই ফাংশনটির প্রোটোটাইপ করছেন এবং সংকলকটি বলছেন যে ফাংশনটি প্রস্থান করে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.