অ্যারেতে উপাদানগুলির সংখ্যা গণনা করার জন্য আকারের (টিওয়াইপিই) এর চেয়ে বেশি আকার (উপাদান) কেন পছন্দ করবেন?


15

আমি "কিং কেএন এর সি প্রোগ্রামিং" পড়ছি এবং নীচের বিবৃতিটি পেয়েছি:

আমরা sizeof(a)/sizeof(a[0])অ্যারেতে উপাদানের সংখ্যা গণনা করতে এক্সপ্রেশনটি ব্যবহার করে আলোচনা করেছি । এক্সপ্রেশনটি sizeof(a)/sizeof(t)যেখানে টি এর উপাদানগুলির প্রকার, সেখানেও কাজ করবে তবে এটি একটি নিকৃষ্ট কৌশল হিসাবে বিবেচিত হয়।

কেন এটি নিকৃষ্ট কৌশল হিসাবে বিবেচিত হয়?


8
আপনি কি বিবেচনা করেছেন যদি প্রোগ্রামার একটিতে উপাদানগুলির ধরণ পরিবর্তন করে? টির চেয়ে আলাদা আকারের একটি টাইপ। প্রথম অভিব্যক্তি এখনও ঠিক আছে হবে দ্বিতীয় ভঙ্গ করবে
মশা

1
@ গ্যাनेट: আপনার উত্তর দেওয়া উচিত।
মার্টিন ইয়র্ক

উত্তর:


26

sizeof(a)/sizeof(t)স্পষ্টভাবে অভিপ্রায় টাইপ কোড। আপনি এখন একই ধরণের একাধিক স্থানে নির্দিষ্ট করেছেন, আপনি একই ধরণের ব্যবহার করছেন তা নিশ্চিত করার জন্য কোনও সংকলক সমর্থন ছাড়াই। সুতরাং, আপনি যদি অ্যারের ভিত্তির ধরণটি পরিবর্তন করেন তবে (সম্পূর্ণ পৃথক) গণনা অভিব্যক্তিতে নয়, বিঙ্গো: আপনার কোডটি কেবল সূক্ষ্ম সংকলন করবে, তবে আপনার উপাদান গণনাটি ভুল হবে। আপনি যদি ভাগ্যবান হন তবে আপনার প্রোগ্রামটি ক্রাশ হয়ে যাবে, তবে তা না থাকলে এটি প্রায় সম্পূর্ণরূপে সঠিকভাবে কাজ করবে তবে একবারে একবারে সম্পূর্ণ উদ্ভট আচরণ করবে।

sizeof(a)/sizeof(a[0])সঠিক হওয়ার নিশ্চয়তা রয়েছে, কেবল অ্যারের নাম প্রয়োজন requ প্রকারটি পরিবর্তন করুন এবং আপনি ভাল আছেন; অ্যারের নাম পরিবর্তন করুন এবং সংকলক অভিযোগ করবে। কোন চিন্তা প্রয়োজন নেই: আমরা এই জাতীয় প্রোগ্রামিং পছন্দ করি।


ভাল, আমি সত্যিই পছন্দ করি sizeof a/sizeof*a, যদিও এটি সত্যিই যথেষ্ট পার্থক্য নয়।
Deduplicator
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.