ইউনিক্স বিশ্বে, 64-বিট প্ল্যাটফর্মের আকার এবং সংখ্যার পয়েন্টারগুলির জন্য কয়েকটি সম্ভাব্য ব্যবস্থা ছিল। দুটি বেশিরভাগ ক্ষেত্রে ব্যবহৃত হয় হ'ল আইএলপি 64৪ (আসলে, এর খুব কম কয়েকটি উদাহরণ; ক্রে এমনই একটি ছিল) এবং এলপি (৪ (প্রায় সব কিছুর জন্য)। সংক্ষিপ্ত আকারগুলি 'ইনট, দীর্ঘ, পয়েন্টারগুলি 64-বিট' এবং 'দীর্ঘ, পয়েন্টারগুলি 64-বিট' থেকে আসে।
Type ILP64 LP64 LLP64
char 8 8 8
short 16 16 16
int 64 32 32
long 64 64 32
long long 64 64 64
pointer 64 64 64
আইএলপি 64৪ সিস্টেমটি এলপি 64৪ এর পক্ষে ছেড়ে দেওয়া হয়েছিল (এটি প্রায় পরবর্তী সমস্ত প্রবেশকারীরা এলপি 6464 ব্যবহার করেছিল, এস্পেন গ্রুপের সুপারিশের ভিত্তিতে; কেবলমাত্র -৪-বিট অপারেশনের দীর্ঘ heritageতিহ্যযুক্ত সিস্টেমগুলি আলাদা স্কিম ব্যবহার করে)। সমস্ত আধুনিক -৪-বিট ইউনিক্স সিস্টেম এলপি 64 ব্যবহার করে। ম্যাকস এক্স এবং লিনাক্স উভয়ই আধুনিক -৪-বিট সিস্টেম।
মাইক্রোসফ্ট 64৪-বিটে স্থানান্তরিত করার জন্য একটি পৃথক স্কিম ব্যবহার করে: এলএলপি 64 ('দীর্ঘ দীর্ঘ, পয়েন্টারগুলি 64-বিট') are এর অর্থের যোগ্যতা রয়েছে যে 32-বিট সফটওয়্যারটি পরিবর্তন ছাড়াই পুনরায় সংযুক্ত করা যায়। এটির প্রত্যেকে যা কিছু করে তার থেকে আলাদা হওয়ার মানসিকতা রয়েছে এবং 64৪-বিট ক্ষমতার ব্যবহারের জন্য কোডও সংশোধন করা দরকার। সর্বদা সংশোধন প্রয়োজনীয় ছিল; এটি ইউনিক্স প্ল্যাটফর্মগুলিতে প্রয়োজনীয় সংশোধনগুলির একটি পৃথক সেট ছিল।
আপনি যদি সফ্টওয়্যারটি প্ল্যাটফর্ম-নিরপেক্ষ পূর্ণসংখ্যার প্রকারের নামগুলির আশেপাশে ডিজাইন করেন, সম্ভবত C99 <inttypes.h>
শিরোনাম ব্যবহার করে যা প্ল্যাটফর্মে প্রকারগুলি উপলভ্য থাকে, স্বাক্ষরিত (তালিকাভুক্ত) এবং স্বাক্ষরযুক্ত (তালিকাভুক্ত নয়; 'ইউ' সহ উপসর্গ) সরবরাহ করে:
int8_t
- 8 বিট পূর্ণসংখ্যা
int16_t
- 16 বিট পূর্ণসংখ্যা
int32_t
- 32-বিট পূর্ণসংখ্যা
int64_t
- -৪-বিট পূর্ণসংখ্যা
uintptr_t
- স্বাক্ষরবিহীন পূর্ণসংখ্যার পয়েন্টার ধরে রাখতে যথেষ্ট বড়
intmax_t
- প্ল্যাটফর্মে পূর্ণসংখ্যার বৃহত্তম আকার (এর চেয়ে বড় হতে পারে int64_t
)
তারপরে আপনি নিজের অ্যাপ্লিকেশনটিকে এই ধরণের যেখানে গুরুত্বপূর্ণ তা ব্যবহার করে কোডিং করতে পারেন এবং সিস্টেমের ধরণের (যা ভিন্ন হতে পারে) সম্পর্কে খুব যত্নশীল হন। একটি intptr_t
প্রকার রয়েছে - হোল্ড পয়েন্টারগুলির জন্য স্বাক্ষরিত পূর্ণসংখ্যার প্রকার; আপনার এটি ব্যবহার না করা বা দুটি uintptr_t
মানের বিয়োগের ফলাফল হিসাবে এটি ব্যবহার করার পরিকল্পনা করা উচিত (ptrdiff_t
) এর ।
তবে, যেমন প্রশ্নটি দেখায় (অবিশ্বাসের সাথে), 64৪-বিট মেশিনে পূর্ণসংখ্যার ডেটা ধরণের আকারের জন্য বিভিন্ন সিস্টেম রয়েছে। অভ্যাস করুন; বিশ্বের পরিবর্তন হবে না।