সি এর অক্ষর ধ্রুবকের (সি ++ এর বিপরীতে) টাইপ রয়েছে 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