হতে পারে আমি এই গ্রহ থেকে নই, তবে আমার কাছে মনে হবে যে নিম্নলিখিতটি একটি সিনট্যাক্স ত্রুটি হওয়া উচিত:
int a[] = {1,2,}; //extra comma in the end
কিন্তু এটা না. আমি যখন এই কোড ভিসুয়াল স্টুডিও উপর কম্পাইল বিস্মিত, কিন্তু আমি যতদূর সি ++ নিয়ম উদ্বিগ্ন, তাই আমি মান পরীক্ষিত এবং এটি MSVC কম্পাইলার বিশ্বাস করতে না শিখেছে হয় মান দ্বারা হিসাবে ভাল অনুমোদিত। ব্যাকরণ নিয়মের জন্য আপনি 8.5.1 দেখতে পাবেন যদি আপনি আমাকে বিশ্বাস না করেন।
কেন এটি অনুমোদিত? এটি একটি মূর্খ অকেজো প্রশ্ন হতে পারে তবে আমি চাই কেন আপনি জিজ্ঞাসা করছেন তা বুঝতে হবে to যদি এটি একটি সাধারণ ব্যাকরণের নিয়মের একটি সাব-কেস হয়, তবে আমি বুঝতে পারি - তারা প্রাথমিক ব্যাকরণটিকে আর কোনও অসুবিধা না করার সিদ্ধান্ত নিয়েছে কেবলমাত্র একটি প্রাথমিক সূচনার তালিকার শেষে অপ্রয়োজনীয় কমাটি অস্বীকার করার জন্য। তবে না, অতিরিক্ত কমাটি স্পষ্টভাবে অনুমোদিত। উদাহরণস্বরূপ, এটি একটি ফাংশন কল আর্গুমেন্ট তালিকার (যখন ফাংশন লাগে শেষে একটি অপ্রয়োজনীয় কমা আছে অনুমোদিত নয় ...
), যা স্বাভাবিক ।
সুতরাং, আবারও, এই অনর্থক কমাটি স্পষ্টভাবে অনুমোদিত হওয়ার কোনও বিশেষ কারণ আছে ?
for()
উদাহরণস্বরূপ), এটি সংযোজনকারী সংকেত ছুঁড়ে দেয়।
if (x = 1)
ব্যাকরণে অস্পষ্ট নয়, তবে এটি মানুষের কাছে অত্যন্ত অস্পষ্ট, এবং এইভাবে একটি সতর্কতা নিক্ষেপ করে।
if
উদাহরণটি অস্পষ্ট নয়। আমি মনে করি না "অস্পষ্ট" এর অর্থ আপনি যা ভাবেন তার অর্থ কি!
;
যখন এটি স্পষ্ট হবে পরবর্তী টোকেনটি আসলে একটি পরবর্তী বিবৃতি।