কেন সেমিকোলন এবং কমাগুলি লুপগুলির জন্য একত্রে পরিবর্তিত হয়?


49

অনেক ভাষায় (বিস্তৃত তালিকা, সি থেকে জাভাস্ক্রিপ্ট পর্যন্ত):

  • কমাগুলি ,পৃথক যুক্তি (যেমন func(a, b, c)), যখন
  • সেমিকোলন ;পৃথক ক্রমিক নির্দেশাবলী (যেমন instruction1; instruction2; instruction3)।

সুতরাং লুপগুলির জন্য কেন এই ম্যাপিং একই ভাষায় বিপরীত হয় :

for ( init1, init2; condition; inc1, inc2 )
{
    instruction1;
    instruction2;
}

পরিবর্তে (যা আমার কাছে আরও স্বাভাবিক মনে হয়)

for ( init1; init2, condition, inc1; inc2 )
{
    instruction1;
    instruction2;
}

?

নিশ্চিত, forহয় (সাধারণত) না একটি ফাংশন, কিন্তু আর্গুমেন্ট (অর্থাত init, condition, increment) আরো নির্দেশাবলীর একটি ক্রম চেয়ে একটি ফাংশন অফ আর্গুমেন্ট মত আচরণ।

এটি কি historicalতিহাসিক কারণে / একটি সম্মেলনের কারণে, বা লুপগুলিতে ,এবং আন্তঃবিন্যাসের জন্য কোনও ভাল যুক্তি রয়েছে ;?


1
(আমার প্রথম পোস্ট এখানে। আমি নিশ্চিত নই যে এই প্রশ্নটি প্রোগ্রামার বা এসও'র বেশি, তাই যদি প্রয়োজন হয় তবে নির্দ্বিধায় নির্দ্বিধায় উদ্রেক করুন))
পাইওর মিগডাল

8
এটি অবশ্যই একটি প্রোগ্রামার পোস্ট। স্বাগত! :-)
মার্টিজান পিটারস

1
"কেন নয়" উত্তরটি সরবরাহ করবে - একই উত্তর পেয়ে - "কারণ কারও পছন্দ করা প্রয়োজন, এবং এটিই তারা পছন্দ করেছিল" কেন তারা "{" এবং "}" এবং 1000 এর অন্যান্য পছন্দ বেছে নিল? তারা তৈরি করেছে - "কারণ"
mattnz

2
@mattnz প্রশ্নটি ধারাবাহিকতা নিয়ে নয় ("কেন আমরা ব্যবহার করি ;না |?" (বা আমরা কেন 'অন্যথায়' অন্যথায় 'ব্যবহার করব না? )) যা একটি ভাষার ক্ষেত্রে নয়, তবে তাদের একটি বড় সংখ্যা। একটি উত্তর যেমন যেমন "এটি সিতে সংক্ষিপ্তরূপে তৈরি হয়েছিল যখন লুপের জন্য (এবং ইনকগুলির জন্য একাধিক বিবৃতি কেবল পরে বিবেচনা করা হত), এবং প্রোগ্রামারদের জ্বালা এড়াতে লোকেরা এটি পরিবর্তন করতে চায়নি" পুরোপুরি ঠিক হয়ে যাবে।
পাইটর মিগডাল

আমি পড়ার কথা স্মরণ করি - সম্ভবত কেএন্ডআর তে - যে কমা অপারেটরটি মূলত ভাষায় যুক্ত হয়েছিল যাতে বিবৃতিটির জন্য ইআর-এক্সপ্রেশনটিতে একাধিক ভেরিয়েবলের আরম্ভ করা সম্ভব হয়।
zwol

উত্তর:


18

সুতরাং কেন একই ভাষাগুলিতে লুপের জন্য এই জাতীয় ম্যাপিং বিপরীত হয়।

প্রযুক্তিগতভাবে, ম্যাপিংটি "বিপরীত" হয় না।

  • কমা দ্বারা পৃথক করা জিনিসগুলি পরামিতি নয়। (কমপক্ষে) সি ++ এবং জাভাতে সেগুলি ঘোষণাপত্র হতে পারে, তাই এগুলি এমনকি প্রকাশও নয়।
  • সেমিকোলন দ্বারা পৃথক করা জিনিসগুলি (একক) বিবৃতিও নয়।

বাস্তবে আমাদের এখানে যা রয়েছে তা একটি ভিন্ন সিনট্যাকটিক প্রসঙ্গ যেখানে একই চিহ্নগুলি আলাদাভাবে ব্যবহৃত হচ্ছে। আমরা লাইকের সাথে তুলনা করছি না, সুতরাং কোনও ম্যাপিং নেই, এবং অর্থগত ধারাবাহিকতার উপর ভিত্তি করে ধারাবাহিক ম্যাপিংয়ের পক্ষে দৃ strong় যুক্তি নেই।

তাহলে অন্য উপায়ে কেন এটি করবেন না?

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

তবে সিনট্যাক্স পছন্দটি কেন করা হয়েছিল তা নিশ্চিতভাবে জানার একমাত্র উপায় হ'ল সি ডিজাইনাররা ~ 1970 সালে তারা কী ভাবছেন তা আমাদের জানাতে পারে। আমি সন্দেহ করি যে তাদের কাছে প্রযুক্তিগত সিদ্ধান্তগুলির সুস্পষ্ট স্মৃতি রয়েছে যা সময়মতো হয়েছিল।


এটি কি historicalতিহাসিক কারণে / একটি সম্মেলনের কারণে?

আমি সি এর আগে এমন কোনও ভাষা সম্পর্কে সচেতন নই যা "ফর" লুপগুলির জন্য সি-জাতীয় সিনট্যাক্স ব্যবহার করেছিল:

  • ডোনাল ফেলো নোট করে যে বিসিপিএল এবং বি এর সমান কাঠামো নেই।

  • ফরট্রান, সিওবিওএল এবং আলগোল -60 (এবং পাস্কাল) সমানুপাতিকগুলি কম ভাবপূর্ণ ছিল এবং তাদের সিনট্যাক্সগুলি ছিল যা "সিনট্যাক্সের জন্য সি" এর মতো ছিল না।

তবে সি, সি ++ এবং জাভা এর মতো ভাষা যা সি এর পরে এসেছিল তারা স্পষ্টতই সি থেকে তাদের "জন্য" বাক্য গঠন ধার করে clearly


সুতরাং, ( ,বনাম ;) এর দর্শন (দুর্বল বনাম শক্তিশালী বিরতি), (টিপল- বনাম সিকোয়েন্স-স্প্লিটার) এর চেয়ে ঠিক আছে? তবুও আমার পক্ষে এটি স্পষ্ট নয় যে যুক্তি বা বিবৃতিতে আরও শক্তিশালী ব্রেক হওয়া প্রয়োজন (যেমন অনেক ক্ষেত্রে বিবৃতি ক্রমের জন্য ব্রেকগুলি অন্তর্নিহিত (উদাহরণস্বরূপ জাভাস্ক্রিপ্ট (উদাহরণস্বরূপ i++[line break]j++) দেখুন)) তবে কমপক্ষে এখন আমি পয়েন্টটি পেয়েছি কেন বর্তমান কনভেনশন "স্পষ্টত বিপরীত" হয় না।
পাইটর মিগডাল

@ পাইওটারমিগডাল কমা হিসাবে একটি বিস্ময়কর হিসাবে কমা অপারেন্ড ব্যবহার আটকাতে পারে এবং ইঙ্গিত হতে পারে লুপের উপাদানগুলি প্রকাশের পরিবর্তে বিবৃতি। এটির গুরুত্বপূর্ণ তাৎপর্য রয়েছে।

শেষ মন্তব্যটি আমাকে বিসিপিএল যা করেছে তা জানতে আগ্রহী করেছিল, তবে স্পষ্টতই এটি ছিল FOR i = e1 TO e2 BY e3 DO c(e1..e3 এক্সপ্রেশনস, সি কমান্ড), যা বেসিকের সিনট্যাক্সের সাথে আরও সান্নিধ্যপূর্ণ। উত্স
একটি সিএনএন

1
@ পাইওটারমিগডাল - কে অ্যান্ডআর এবং বাকী সবাই ১৯ 1970০ সালে ফিরে যা ভাবছিলেন তা "দর্শন" is যা আপনি কল্পনা করেছেন তা গভীরতায় গিয়েছিল বলে আমি মনে করি না। (তারা এসেম্বলারের মাধ্যমে টেলিফোন সুইচ সফটওয়্যারটির জনগণকে লিখতে না এড়াতে একটি "উচ্চ স্তরের" ভাষা প্রয়োগের চেষ্টা করছিল।)
স্টিফেন সি

আমি শুধু পরীক্ষা করেছি; forসিনট্যাক্স (এটা ছিল না সি চালু করা হয় বি বা BCPL)।
ডোনাল ফেলো

60

আমরা লুপগুলি লিখি:

 for(x = 0; x < 10; x++)

ভাষাটি এমনভাবে সংজ্ঞায়িত করা যেতে পারে যাতে লুপগুলি দেখতে পছন্দ করে:

 for(x = 0, x < 10, x++)

তবে, কিছুক্ষণের জন্য লুপ ব্যবহার করে একই লুপটি প্রয়োগ করুন:

 x = 0;
 while(x < 10)
 {
     x++;
 }

লক্ষ্য করুন x=0এবং x++সেমিকোলন দ্বারা সমাপ্ত বিবৃতিগুলি। আপনার মতামত কোনও ফাংশন কলের মত প্রকাশের মতো নয়। সেমিকোলনগুলি পৃথক বিবৃতি পৃথক করতে ব্যবহৃত হয় এবং যেহেতু লুপের জন্য তিনটি উপাদানের মধ্যে দুটি স্টেটমেন্ট হয়, সেখানে এটি ব্যবহৃত হয়। লুপের জন্য এ যেমন লুপের জন্য একটি শর্টকাট।

অতিরিক্তভাবে, যুক্তিগুলি কোনও ফাংশনে আর্গুমেন্টের মতো কাজ করে না। দ্বিতীয় এবং তৃতীয় বারবার মূল্যায়ন করা হয়। এটি সত্য যে তারা কোনও ক্রম নয়, তবে তারা কার্যকরী যুক্তিও নয়।

এছাড়াও, আপনি লুপের জন্য একাধিক বক্তব্য রাখতে কমা ব্যবহার করতে পারবেন তা আসলে লুপের বাইরে আপনি যা করতে পারেন তা।

x = 0, y= 3;

লুপের বাইরেও একেবারে বৈধ বিবৃতি। যদিও লুপের বাইরে কোনও ব্যবহারিক ব্যবহারের কথা জানি না। তবে মুল বক্তব্যটি হ'ল কমাগুলি সর্বদা বিবৃতিগুলিকে সাবডভাইড করে; এটি লুপের কোনও বিশেষ বৈশিষ্ট্য নয়।


অবশ্যই, আমি বুঝতে পারি যে "যখন" লুপটি "আরও মৌলিক"। তবে এই জাতীয় "শর্ট-হাতের স্বরলিপি" তেমন কোনও তাত্পর্যপূর্ণ নয় (কমপক্ষে আমার কাছে), আপনি যেমনটি শুরু করেছিলেন x = 0; y = 0;এবং (কোঁকড়ানো বন্ধনীটির ভিতরে) x++; y++;...
পাইওটর মিগডাল

2
@ পাইওটারমিগডাল, ওহ আপনি করতে পারতেন। আমার বক্তব্যটি হ'ল লুপের ভিতরে থাকা টুকরোগুলি হ'ল বিবৃতি (যা সেমিকোলন দ্বারা পৃথক করা হয়) প্রকাশ নয় (যা কমা দ্বারা পৃথক করা হয়)
উইনস্টন এওয়ার্ট

1
আমি পার্থক্যটি পেয়েছি, কেবলমাত্র বিবৃতিগুলির অনুক্রমের জন্য আমার ;পক্ষে স্বাভাবিক , অগত্যা কোনও বিবৃতি পৃথক করে না (তবে এটির কি স্বাদ আলাদা হয়?)। এবং বর্তমান সম্মেলনে একটি মাঝেমধ্যে যে কোনও উপায়ে কমা দিয়ে বিবৃতিগুলির পৃথক ধারাবাহিকতা শেষ করে ...
পাইটর মিগডাল

3
@ পাইওটারমিগডাল, স্ট্রাইক / ইউনিয়নগুলির সদস্যগণ সেমিকোলন দ্বারা পৃথক করা হয়, তবে সেগুলি আসলে অনুক্রমিক নয়। সুতরাং এটি অবশ্যই এর ব্যবহারের বিবৃতি ক্রমের মধ্যে সীমাবদ্ধ নয়। দিন শেষে বাক্য গঠন বরং স্বাদে নেমে আসে।
উইনস্টন ইওয়ার্ট

লুপের বাইরের কোনও ব্যবহারিক ব্যবহার সম্পর্কে আমি জানি না --- --- কীভাবে --- আপনি (foo)?bar++, qux++:bletchযেখানে ?:কেবল একটিটির চেয়ে দুটি অভিব্যক্তি প্রকাশ করতে চান । রিটার্ন মানটি যদি fooসত্য হয় quxতবে দুটি barএবং quxবর্ধিত হবে।

15

সি এবং সি ++ এ এটি কমা অপারেটর, কেবল কমা নয়।

forলুপের ব্যাকরণটি এমন কিছু

for ([pre-expression]; [terminate-condition]; [increment-expression]) body-expression

আপনার প্রশ্নের ক্ষেত্রে:

pre-expression -> init1, init2
terminate-condition -> condition
increment-expression -> inc1, inc2

নোট করুন যে কমা-অপারেটর আপনাকে এক বিবৃতিতে একাধিক ক্রিয়া সম্পাদন করার অনুমতি দেয় (সংকলক এটি দেখায়)। আপনার পরামর্শটি যদি প্রয়োগ করা হয় তবে প্রোগ্রামার যখন কমা-অপারেটর স্টেটমেন্ট বা বিভাজক লিখতে চেয়েছিল তখন ব্যাকরণে একটি দ্ব্যর্থহীনতা থাকতে পারে।

সংক্ষেপে, ;একটি বিবৃতি শেষে বোঝায়। একটি forলুপ একটি কীওয়ার্ড এবং তার চারপাশে ঘিরে থাকা alচ্ছিক বিবৃতিগুলির তালিকা ()। কমা-অপারেটর বিবৃতিটি ,একক বিবৃতিতে ব্যবহারের অনুমতি দেয় ।


3
এ জন্য লুপটি সেমিকোলন দ্বারা বিভক্ত এক্সপ্রেশনগুলির একটি সেট। বিবৃতি প্রকাশের চেয়ে অনেক বেশি হতে পারে - কেস স্টেটমেন্টটি কে পিছলে নিতে পারে না বা লুপের জন্য স্টেটমেন্টে স্টেটমেন্ট দেওয়া যায় না। এটি উল্লেখযোগ্যভাবে বোঝা যায় যে ফর লুপের উপাদানগুলি বিবৃতি হয় যখন কেউ লুপের জন্য

@ মিশেলটি: তবে সি ++ এ একটি forলুপের বাক্য গঠনটি তার প্রথম অংশ হিসাবে স্পষ্টভাবে একটি বিবৃতি (ঘোষণা) মঞ্জুরি দেয়। (সি ++ এর পূর্বসূরী C89 এর বিপরীতে মিড-ফাংশন হিসাবে অনুমোদিত ঘোষণার অনুমতি দিয়েছে)। আপনি সি এবং সি ++ এর কাছাকাছি 2 টি ভাষার জন্য এমনকি ভাষাগুলিতে এই জাতীয় বিবৃতিগুলি সাধারণকরণ করতে পারবেন না।
এমসাল্টারগুলি

@ মিশেলটি আপনি 'অংশের মতো' অংশটি মিস করেছেন?
জেমস

@James আপনি প্রকৃত বিএনএফ ব্যবহার করে "মত কিছু" এড়াতে পারেন for ( {<expression>}? ; {<expression>}? ; {<expression>}? ) <statement>জন্য সি এবং for ( for-init-statement; conditionopt ; expressionopt ) statementজন্য সি ++ --- ';' কেবল বিবৃতি টার্মিনেটরকেই বোঝায় না। লুপের জন্য এ () এর সাথে সংযুক্ত বিবৃতি অনুসরণ করা হয় না।

8

কোন ধারণাগত বিপরীত আছে।

সি এর সেমিকোলনগুলি কমাগুলির চেয়ে বেশি বড় বিভাগকে উপস্থাপন করে। তারা বিবৃতি এবং ঘোষণা পৃথক।

লুপের জন্য প্রধান বিভাগগুলি হল তিনটি এক্সপ্রেশন (বা একটি ঘোষণা এবং দুটি এক্সপ্রেশন) এবং একটি বডি রয়েছে।

লুপের জন্য সি তে আপনি যে কমা দেখতে পাচ্ছেন তা বিশেষত লুপের বাক্য গঠনের অংশ নয়। এগুলি কেবল কমা অপারেটরের প্রকাশ।

ফাংশন কলগুলিতে যুক্তিগুলির মধ্যে এবং ফাংশন ঘোষণার ক্ষেত্রে পরামিতিগুলির মধ্যে কমাগুলি প্রধান বিভাজক হয়, তবে সেমিকোলন ব্যবহার হয় না। লুপটির জন্য বিশেষ বাক্য গঠন; এটির সাথে ফাংশন বা ফাংশন কলগুলির কোনও সম্পর্ক নেই।


2

হতে পারে এটি সি / সি ++ এর জন্য সুনির্দিষ্ট কিছু তবে আমি এই উত্তরটি পোস্ট করলাম কারণ আপনার বর্ণিত ল্যাঙ্গুয়েজের বাক্য গঠনটি বেশিরভাগ সি-সিনট্যাক্স দ্বারা প্রভাবিত।

প্রযুক্তিগত দৃষ্টিকোণ থেকে পূর্বের উত্তরগুলি দেওয়া সত্যগুলি ছাড়াও এটি কারণ সি (এবং সি ++) এ কমা আসলে একটি অপারেটর , আপনি এমনকি ওভারলোডও করতে পারেন । সেমিকোলন-অপারেটর ( operator;()) ব্যবহার করা কমপ্লায়ারগুলি লিখতে সম্ভবত আরও শক্ত করে তোলে, যেহেতু সেমিকোলনটি অ্যাকজিওমেটিক এক্সপ্রেশন টার্মিনেটর।

এই আন্তঃআবিশ্লেষকে কী সত্য করে তোলে তা হ'ল কমাটি পুরো ভাষার জুড়ে বিস্তর হিসাবে পৃথকভাবে ব্যবহৃত হয় । মনে হচ্ছে কমা অপারেটর একটি ব্যতিক্রম, এটি মূলত forএকাধিক শর্তে কাজ করে-লুপ পেতে ব্যবহৃত হয় , তাই চুক্তি কী?

প্রকৃতপক্ষে operator,সংজ্ঞা, যুক্তি তালিকার তালিকা ইত্যাদির মতো একই জিনিসটি তৈরির জন্য নির্মিত: এটি পৃথক এক্সপ্রেশনগুলির জন্য নির্মিত হয়েছে - সিনট্যাকটিক নির্মাণটি কিছু ,করতে পারে না। এটি কেবল স্ট্যান্ডার্ডে যা সংজ্ঞায়িত হয়েছে তা আলাদা করতে পারে।

তবে সেমিকোলনটি আলাদা হয় না - এটি শেষ হয় । এবং এটিই আমাদের মূল প্রশ্নে ফিরে আসে:

for (int a = 0, float b = 0.0f; a < 100 && b < 100.0f; a++, b += 1.0f)
    printf("%d: %f", a, b);

কমা তিনটি লুপ অংশে প্রকাশগুলি পৃথক করে, যেখানে সেমিকোলন লুপ সংজ্ঞাটির একটি অংশ (সূচনা, শর্ত বা উত্তরোত্তর) সমাপ্ত করে।

নতুন প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি (সি # এর মতো) কমা-অপারেটরটিকে ওভারলোড করার অনুমতি নাও দিতে পারে তবে তারা সম্ভবত সিনট্যাক্সটি রেখেছিল, কারণ এটি পরিবর্তন করা কিছুটা অপ্রাকৃত অনুভব করে।


এই যুক্তি নিয়ে একটি সমস্যা আছে। একটি forবিবৃতিতে ;প্রতীকটি স্পষ্টভাবে পৃথককারী হিসাবে ব্যবহৃত হয়। এটি বিবৃতিটির 3 টি সিনট্যাক্টিক অংশ পৃথক করে। প্রগতিশীল অভিব্যক্তি তালিকার "সমাপ্ত" করার জন্য তৃতীয় সেমিকোলন নেই। এটি অন্য একটি টোকেন দ্বারা সমাপ্ত করা হয় - )
স্টিফেন সি

0

আমার জন্য এগুলি তাদের ভাষাগত অর্থে আরও কম অনুরূপ অর্থ ব্যবহৃত হয়। কমাগুলি আরও পৃথক অংশের সাথে তালিকা এবং সেমিকোলনগুলির সাথে ব্যবহৃত হয়।

ইন func(a, b, c)আমরা আর্গুমেন্ট একটি তালিকা আছে।

instruction1; instruction2; instruction3 সম্ভবত একটি তালিকা কিন্তু পৃথক এবং স্বতন্ত্র নির্দেশাবলীর একটি তালিকা।

যদিও for ( init1, init2; condition; inc1, inc2 )আমাদের তিনটি পৃথক অংশ রয়েছে - ইনিশিয়ালাইজেশনগুলির একটি তালিকা, একটি শর্ত এবং বর্ধিত এক্সপ্রেশনগুলির একটি তালিকা।


0

এটি দেখার সহজ উপায় নিম্নলিখিতটি:

for(x = 0; x < 10; x++)

হল:

for(
x = 0;
x < 10;
x++
)

অন্য কথায়, সেই x = 0 টি জিনিসটি প্যারামিটারের পরিবর্তে একটি বিবৃতি / নির্দেশাবলী। আপনি সেখানে একটি বিবৃতি .োকান। সুতরাং সেগুলি সেমিকোলন দ্বারা পৃথক করা হয়।

আসলে এগুলি কমা দ্বারা বিচ্ছিন্ন হওয়ার কোনও উপায় নেই। আপনি যখন x <10 এর মতো জিনিসগুলি প্যারামিটার হিসাবে সন্নিবেশ করিয়েছেন? আপনি যদি একবার x <10 কম্পিউটার করতে চান এবং সেই অপারেশনের ফলাফলটিকে প্যারামিটার হিসাবে sertোকান তবে আপনি তা করেন। সুতরাং কমা বিশ্বে আপনি x <10 লাগিয়ে রাখেন যদি আপনি কোনও ফাংশনে x <0 এর মান পাস করতে চান।

এখানে আপনি উল্লেখ করেছেন যে প্রতিবার লুপটি পাস করার পরে প্রোগ্রামটি x <10 পরীক্ষা করা উচিত। সুতরাং এটি একটি নির্দেশ।

এক্স ++ অবশ্যই অন্য নির্দেশাবলী।

সেগুলি সমস্ত নির্দেশাবলী। সুতরাং তারা আধা কোলন দ্বারা পৃথক করা হয়।


এটা কোন বিবৃতি নয়। এটি সেমিকোলন দ্বারা বিভক্ত একটি প্রকাশ। একটি বিবৃতি সম্পূর্ণ আলাদা।

x <10 একটি অভিব্যক্তি হতে পারে (যা সাধারণত সেমিকোলন দ্বারা পৃথক করা হবে। x = 0 অবশ্যই একটি বিবৃতি / নির্দেশাবলী
ব্যবহারকারী4951

সি জন্য বিএনএফ - যদি লুপ বিবৃতি ছিল, এক ধরনের আরেকটি হিসাবে অন্যান্য বিবৃতি ব্যবহার করতে পারে for switchবা return ভিতরে লুপ সংজ্ঞা (অর্থাত জন্য for(int i = 0; if(i > 1024) { return; } ; switch (i % 3) { case 0; case 1: i++; case 2: i++; } ) { ... }) --- তুমি পারবে না। এটা কোন বিবৃতি নয়। পরিবর্তে এটি সংজ্ঞায়িত করা হয়েছেfor ( {<expression>}? ; {<expression>}? ; {<expression>}? ) <statement>

স্ট্রেঞ্জ। ইন্ট আই = 0 হ'ল একটি এক্সপ্রেশন ঠিক আছে, তবে আমরা এটি মূলত একটি ইন্ট ঘোষণা করার জন্য করি এবং এটির জন্য 0 নির্ধারণ করি (এটি 0 প্রদান করে তবে পার্শ্ব প্রতিক্রিয়া হিসাবেও You আপনি এটি করতে পারবেন না {int i = 0; j = i}; j <0; cout << "হ্যালো ওয়ার্ল্ড") আপনি কি পারবেন? বা হ্যাঁ আপনি করতে পারেন বলে মনে করি
ব্যবহারকারী4951

1
@ জিমথিও: আপনি সম্ভবত এটি সম্পর্কে অবগত নন, তবে "স্টেটমেন্ট" এবং "এক্সপ্রেশন" এর ভাষার মানগুলির খুব সুনির্দিষ্ট অর্থ রয়েছে। int i = 0অবশ্যই একটি অভিব্যক্তি নয়। কোন অভিব্যক্তিটি বর্ণনা করতে পারে এমন বিধিগুলির সেটটি মোটামুটি জটিল, কীভাবে কোনও অভিব্যক্তি গঠন করতে পারে তা বিবেচনা করে, তবে TYPE NAME = EXPRESSIONগঠনগুলি এই নিয়মের কোনওটির সাথে মেলে না।
MSalters
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.