সি এর অক্ষর ধ্রুবকের (সি ++ এর বিপরীতে) টাইপ রয়েছে int। সুতরাং এই কল
printf("%d",sizeof('A'));
ফলাফল 4. sizeof( 'A' )এটি সমান sizeof( int )।
সি স্ট্যান্ডার্ড থেকে (6.4.4.4 অক্ষর ধ্রুবক)
10 একটি পূর্ণসংখ্যার চরিত্রের ধ্রুবকের টাইপ থাকে int ....
অন্যদিকে (6.5.3.4 আকার এবং alignof অপারেটর)
4 যখন আকার অপারেন্ডে প্রয়োগ করা হয় যেখানে টাইপ চর, স্বাক্ষরবিহীন চর, বা স্বাক্ষরিত চর, (বা এর কোয়ালিএড সংস্করণ) রয়েছে ফলাফল 1 হয়।
সুতরাং sizeofএই অভিব্যক্তিটির মধ্যে অপারেটরের অপারেন্ডের sizeof( 'A' )টাইপটি int থাকে যখন এই এক্সপ্রেশনটিতে sizeof( a )যেখানে একটির মতো ঘোষিত হয়
char a = 'A';
অপারেন্ড টাইপ আছে char।
এই মত কলগুলিতে মনোযোগ দিন
printf("%d",sizeof(6.5));
ভুল রূপান্তর বিন্যাস নির্দিষ্টকরণ ব্যবহার করুন। আপনাকে লিখতে হবে
printf("%zu",sizeof(6.5));
উপরের কলটিতে doubleএই কলটিতে থাকাকালীন ধরণের ধ্রুবক ব্যবহৃত হয়
printf("%zu",sizeof(c));
ভেরিয়েবলের cটাইপ রয়েছে float।
এই কলগুলির জন্য আপনি একই ফলাফলটি পেতে পারেন যদি প্রথম কলটি ধরণের ফ্লোটের মতো ধ্রুবক ব্যবহার করে
printf("%zu",sizeof(6.5f));
6.5ভাসা নয়, এটি একটিdouble