আমি মনে করি সি 11 মানকটি এই আচরণটি কভার করে এবং বলে যে ফলাফল অনির্দিষ্ট , এবং আমি মনে করি না C18 এই ক্ষেত্রে কোনও প্রাসঙ্গিক পরিবর্তন করেছে।
মানক ভাষাটি বিশ্লেষণ করা সহজ নয়। স্ট্যান্ডার্ডটির প্রাসঙ্গিক বিভাগটি
Initial6.7.9 ইনিশিয়ালেশন । বাক্য গঠনটি নথিভুক্ত করা হয়:
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
initializer-list:
designation
opt
initializer
initializer-list , designation
opt
initializer
designation:
designator-list =
designator-list:
designator
designator-list designator
designator:
[ constant-expression ]
. identifier
নোট করুন যে শর্তগুলির মধ্যে একটি হ'ল অ্যাসাইনমেন্ট-এক্সপ্রেশন এবং যেহেতু a[2] = 1
indubitably একটি অ্যাসাইনমেন্ট এক্সপ্রেশন তাই অ স্থিতিক সময়কালীন অ্যারেগুলির জন্য এটি আরম্ভকারীদের অভ্যন্তরে অনুমোদিত হয়:
§4 স্ট্যাটিক বা থ্রেড স্টোরেজ সময়কাল এমন কোনও অবজেক্টের জন্য ইনিশিয়ালাইজারের সমস্ত এক্সপ্রেশন হ'ল স্থির এক্সপ্রেশন বা স্ট্রিং লিটারাল।
মূল অনুচ্ছেদের মধ্যে একটি:
§19 সূচনাটি আরম্ভকারী তালিকার ক্রমে সংঘটিত হবে, প্রতিটি ইনিশিয়ালাইজার একই সাবোবজেক্টের জন্য পূর্বের তালিকাভুক্ত কোনও প্রাথমিক সূচককে ওভাররাইড করে নির্দিষ্ট সাবোবজেক্টের জন্য সরবরাহ করা হয়; 151)
সমস্ত সাবওজেক্টস যা স্পষ্টভাবে আরম্ভ করা হয়নি তা স্পষ্টভাবে আরম্ভ করা হবে স্থিতিশীল স্টোরেজ সময়কালযুক্ত অবজেক্টগুলির মতোই।
151) সাবোবজেক্টের জন্য কোনও ইনিশিয়ালাইজার যা ওভাররাইড হয়ে গেছে এবং তাই আরম্ভ করতে ব্যবহৃত হয়নি যে সাবোবজেক্টটি মোটেও মূল্যায়ন করা যায় না।
এবং অন্য কী অনুচ্ছেদে হ'ল:
§ 23 সূচনা তালিকা প্রকাশের মূল্যায়নগুলি অনির্দিষ্টকালের জন্য একে অপরের প্রতি সম্মানযুক্ত এবং এভাবে কোনও পার্শ্বপ্রতিক্রিয়ার ক্রমটি অনির্ধারিত। 152)
152) বিশেষত, মূল্যায়ন আদেশ সাবোবজেক্ট আরম্ভের ক্রমের মতো হওয়া উচিত নয়।
আমি মোটামুটি নিশ্চিত যে অনুচ্ছেদ § 23 ইঙ্গিত দেয় যে প্রশ্নটিতে চিহ্নিতকরণ:
int a[5] = { a[2] = 1 };
অনির্দিষ্ট আচরণ বাড়ে। অ্যাসাইনমেন্টটি a[2]
একটি পার্শ্ব-প্রতিক্রিয়া, এবং অভিব্যক্তিগুলির মূল্যায়ন ক্রম একে অপরের প্রতি শ্রদ্ধার সাথে অনিচ্ছাকৃতভাবে ক্রমযুক্ত। ফলস্বরূপ, আমি মনে করি না যে স্ট্যান্ডার্ডের কাছে আবেদন করার এবং দাবি করার কোনও উপায় আছে যে কোনও নির্দিষ্ট সংকলক এটি সঠিকভাবে বা ভুলভাবে পরিচালনা করছে।
a[2]=1
মূল্যায়ন করে1
।