আমার মেশিনে এই কোডটি সংকলনের পরে আমি অদ্ভুত কিছু লক্ষ্য করেছি:
#include <stdio.h>
int main()
{
printf("Hello, World!\n");
int a,b,c,d;
int e,f,g;
long int h;
printf("The addresses are:\n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x",
&a,&b,&c,&d,&e,&f,&g,&h);
return 0;
}
ফলাফল নিম্নলিখিত। লক্ষ্য করুন যে প্রতিটি পূর্ববর্তী ঠিকানার মধ্যে একটি 4-বাইট পার্থক্য রয়েছে। তবে শেষ প্রান্ত এবং দীর্ঘ অন্তরের মধ্যে একটি 12-বাইট পার্থক্য রয়েছে:
Hello, World!
The addresses are:
da54dcac
da54dca8
da54dca4
da54dca0
da54dc9c
da54dc98
da54dc94
da54dc88
sizeof
ফাংশন আছে । printf("size: %d ", sizeof(long));
%x
। আপনার জন্য ভাগ্যবান, এটি আপনার প্ল্যাটফর্মে সঠিকভাবে কাজ করার জন্য প্রত্যাশিত ফর্ম্যাট স্ট্রিং সহ unsigned int
পয়েন্টার আরোগুলি পেরিয়ে যায় তবে পয়েন্টার এবং ইনটগুলি অনেক এবিআইতে বিভিন্ন আকারের হয়। %p
পোর্টেবল কোডে পয়েন্টারগুলি মুদ্রণ করতে ব্যবহার করুন । (এমন কোনও সিস্টেমের কল্পনা করা সহজ যেখানে আপনার কোডটি 8
%zu
। অ্যাড্রেস ব্যবহার মুদ্রণের জন্য%p
@ yoyo_fun । ভুল ফর্ম্যাট স্পেসিফায়ার ব্যবহার অনির্ধারিত আচরণের
int
পরে অন্য রাখুনh
। সংকলকটি এর আগে ফাঁকে রেখে দিতে পারেh
।