মধ্যে পার্থক্য কি int, System.Int16, System.Int32এবং System.Int64তাদের মাপ ছাড়া অন্য?
মধ্যে পার্থক্য কি int, System.Int16, System.Int32এবং System.Int64তাদের মাপ ছাড়া অন্য?
উত্তর:
প্রতিটি ধরণের পূর্ণসংখ্যার স্টোরেজ ক্ষমতার একটি আলাদা পরিসীমা থাকে
Type Capacity
Int16 -- (-32,768 to +32,767)
Int32 -- (-2,147,483,648 to +2,147,483,647)
Int64 -- (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807)
যেমনটি জেমস সাদারল্যান্ড তাঁর উত্তরে বলেছিলেন :
intএবংInt32প্রকৃতপক্ষে সমার্থক;intএকটু বেশি পরিচিত খুঁজছেন হবেInt3232-bitness আরো অনেক কিছু আপনার কোড পড়া যারা স্পষ্ট করে তোলে। আমি ইন্টি ব্যবহার করতে আগ্রহী যেখানে আমার কেবল 'পূর্ণসংখ্যা' দরকার,Int32যেখানে আকারটি গুরুত্বপূর্ণ (ক্রিপ্টোগ্রাফিক কোড, কাঠামো) যাতে ভবিষ্যতের রক্ষণাবেক্ষণকারীরা জানতে পারবেন যে এটিintযথাযথভাবে বাড়ানো নিরাপদ , তবেInt32একই পদ্ধতিতে পরিবর্তনগুলি পরিবর্তনের যত্ন নেওয়া উচিত ।ফলস্বরূপ কোডটি অভিন্ন হবে: পার্থক্যটি নির্ভুলভাবে পঠনযোগ্যতা বা কোড উপস্থিতি।
intহয় সবসময় Int32 , সিস্টেম নির্বিশেষে। সম্ভবত আপনি সি ++ এর কথা ভাবছেন?
এখানে আসল পার্থক্যটিই আকার। এখানকার সমস্ত প্রকারের মধ্যে স্বাক্ষরিত পূর্ণসংখ্যা মানগুলি থাকে যা বিভিন্ন আকারের হয়
Int16: 2 বাইটInt32এবং int: 4 বাইটInt64 : 8 বাইটInt64এবং বাকিগুলির মধ্যে একটি ছোট পার্থক্য রয়েছে । একটি 32 বিট প্ল্যাটফর্মের জন্য কোনও Int64স্টোরেজ লোকেশনে অ্যাসোনম হওয়ার গ্যারান্টি নেই। এটি অন্যান্য ধরণের সমস্তর জন্য গ্যারান্টিযুক্ত।
Int64মধ্যে 32 bit Windows Operating Systemতারপর বিষয় আমি জেল হতে পারে কি? কোন উদাহরণ আছে?
int- এ
এটি সি # তে সংজ্ঞায়িত একটি আদিম ডাটা টাইপ।
এটি এফসিএল টাইপের ইন্টার 32 এ ম্যাপ করা হয়।
এটি একটি মান ধরণের এবং সিস্টেম.আইটি 32 স্ট্রাক্ট উপস্থাপন করে।
এটি স্বাক্ষরিত এবং 32 বিট নেয়।
এটির সর্বনিম্ন -2147483648 এবং সর্বাধিক +2147483647 মান রয়েছে।
Int16
এটি একটি এফসিএল টাইপ।
সি # তে সংক্ষিপ্তটিকে ম্যাপ 16 দেওয়া হয়।
এটি একটি মান ধরণের এবং System.Int16 কাঠামোর প্রতিনিধিত্ব করে।
এটি স্বাক্ষরিত এবং 16 বিট নেয়।
এটির সর্বনিম্ন -32768 এবং সর্বাধিক +32767 মান রয়েছে।
Int32
এটি একটি এফসিএল টাইপ।
সি # তে, ইনট 32 এ ম্যাপ করা হয়।
এটি একটি মান ধরণের এবং সিস্টেম.আইটি 32 স্ট্রাক্ট উপস্থাপন করে।
এটি স্বাক্ষরিত এবং 32 বিট নেয়।
এটির সর্বনিম্ন -2147483648 এবং সর্বাধিক +2147483647 মান রয়েছে।
Int64
এটি একটি এফসিএল টাইপ।
C #, দীর্ঘ Int64 ম্যাপ করা হয়েছে।
এটি একটি মান টাইপ এবং সিস্টেম.আইটি 64৪ স্ট্রাক্ট উপস্থাপন করে।
এটি স্বাক্ষরিত এবং b৪ বিট নেয়।
এটির সর্বনিম্ন –9,223,372,036,854,775,808 এবং সর্বাধিক 9,223,372,036,854,775,807 মান রয়েছে।
Int64ডাটা টাইপ ব্যবহার প্রতিনিধিত্ব করা যাবে Lবা lপ্রত্যয় যখন Int16বা Int32C # প্রত্যয় না।
জেফ্রি রিচারের মতে (.NET ফ্রেমওয়ার্ক বিকাশের অন্যতম অনুদানকারী) 'সি # এর মাধ্যমে সিএলআর' বইয়ের বই:
সিটি # সংকলক দ্বারা অনুমোদিত এক প্রাথমিক টাইপ, যখন অন্তর্গত 32 ফ্রেমওয়ার্ক ক্লাস লাইব্রেরি টাইপ (সিএলএস মেনে চলতে থাকা ভাষাগুলিতে উপলব্ধ)। প্রকৃতপক্ষে, সংকলনের সময় int 32 এ অনুবাদ করে।
এছাড়াও,
সি # তে, System.Int64 এ দীর্ঘ মানচিত্র, তবে ভিন্ন প্রোগ্রামিং ভাষায় দীর্ঘগুলি 16 ইন্ট 16 বা ইন্ট 32 এ মানচিত্র করতে পারে। প্রকৃতপক্ষে, সি ++ / সিএলআই অন্তত 32 হিসাবে বিবেচনা করে।
আসলে, বেশিরভাগ (.NET) ভাষা এমনকি কীওয়ার্ড হিসাবে দীর্ঘ ব্যবহার করে না এবং এটি ব্যবহার করে এমন কোড সংকলন করে না।
আমি এই লেখক এবং অনেক নেট সাহিত্যে দেখেছি। নেট এফসিএল প্রকারের (যেমন, আন্তঃ 32) ভাষা-নির্দিষ্ট আদিম ধরণের (যেমন, আন্তঃ) মূলত আন্তঃব্যবহারযোগ্যতার উদ্বেগের উপরে prefer
16, 32 এবং 64 ধরণের উপর একটি খুব গুরুত্বপূর্ণ নোট:
আপনি যদি এই কোয়েরিটি চালান ... অ্যারে.আইডেক্সঅফ (নতুন ইন্টার 16 [] {1,2,3}, 1)
আপনি মনে করছেন শূন্য (0) পেয়েছেন কারণ আপনি জিজ্ঞাসা করছেন ... 1, 2 বা 3 এর অ্যারের মধ্যে 1 হ'ল উত্তর হিসাবে আপনি যদি 1 পান তবে এর অর্থ 1 টি 1, 2 বা 3 এর অ্যারের মধ্যে নয় ।
আমি যা পেয়েছি তা ভাল করে দেখুন: নীচের সমস্তটি আপনাকে 0 প্রদান করবে এবং না -1 (আমি এটি সমস্ত ফ্রেমওয়ার্ক সংস্করণে 2.0, 3.0, 3.5, 4.0 এ পরীক্ষা করেছি)
সি #:
Array.IndexOf(new Int16[]{1,2,3}, 1) = -1 (not correct)
Array.IndexOf(new Int32[]{1,2,3}, 1) = 0 (correct)
Array.IndexOf(new Int64[]{1,2,3}, 1) = 0 (correct)
VB.NET:
Array.IndexOf(new Int16(){1,2,3}, 1) = -1 (not correct)
Array.IndexOf(new Int32(){1,2,3}, 1) = 0 (correct)
Array.IndexOf(new Int64(){1,2,3}, 1) = -1 (not correct)
সুতরাং আমার বক্তব্যটি হচ্ছে, অ্যারের জন্য। সূচিপত্রের তুলনা করুন, কেবল ইন্টার 32 এর উপর নির্ভর করুন!
shortএগুলিকে অ্যারেতে ফিট করার জন্য স্পষ্টভাবে নিক্ষেপ করা হয়, যখন দ্বিতীয় আক্ষরিক 1টিকে একটি সাধারণ হিসাবে রেখে দেওয়া হয় int। (int)1সমান বিবেচনা করা হয় না করতে (short)1, (short)2, (short)3, এইভাবে ফল -1।
Array.IndexOf(new Int16(){1,2,3}, 1S) Array.IndexOf(new Int32(){1,2,3}, 1I) Array.IndexOf(new Int64(){1,2,3}, 1L)প্রত্যাশার মতো সমস্ত কাজ।
Object[],Objectওভারলোড ব্যবহার করে । সি শার্প পরোক্ষভাবে উত্থাপন করা হয় intএকটি থেকে longপ্রয়োজন হলে (এবং আরো একটি উত্থাপন shortএকটি থেকে intবা long), কিন্তু পরোক্ষভাবে ব্যবহার নিক্ষেপ করবে না, objectপরিবর্তে জমিদার। ইউনিফর্মের প্রকার সরবরাহ করার সাথে সাথে Option Strict Onবা Offভিবি কেবল টাইপড ওভারলোড ব্যবহার করবে, অন্যথায় এটি objectওভারলোডটি ব্যবহার করে ।
for Array.IndexOf comparisons, only trust Int32!ভুল। যদি আপনি 1সম্পর্কিত অ্যারে প্রকারের সাথে চূড়ান্ত যুক্তিটি ফেলে দেন তবে এটি প্রত্যাশার মতো কাজ করে।
সম্পাদনা: এটি সি # এর পক্ষে একেবারেই সত্য নয়, আমি এই প্রশ্নের উত্তর দেওয়ার সময় আমি যে ট্যাগটি মিস করেছি - যদি সেখানে আরও # সি নির্দিষ্ট উত্তর থাকে তবে দয়া করে তার পক্ষে ভোট দিন!
এগুলি সমস্ত বিভিন্ন আকারের পূর্ণসংখ্যার প্রতিনিধিত্ব করে।
তবে, একটি খুব ছোট পার্থক্য আছে।
ইন্ট 16, ইন্ট 32 এবং ইন্ট 64 এর একটি নির্দিষ্ট আকার থাকে।
আপনি যে আর্কিটেকচারের জন্য সঙ্কলন করছেন তার উপর কোনও ইন্টির আকার নির্ভর করে - সি স্পেকটি কেবল একটি সংক্ষিপ্ত আকারকে বৃহত্তর বা সমান হিসাবে সংজ্ঞায়িত করে যদিও বাস্তবে এটি আপনার প্রসেসরের যে প্রস্থটি আপনি লক্ষ্য করছেন সেটি সম্ভবত 32 বিট তবে আপনার জানা উচিত এটা নাও হতে পারে
intএবং int32এটি এক এবং একই (32-বিট পূর্ণসংখ্যা)int16 সংক্ষিপ্ত ইনট (2 বাইট বা 16-বিট)int64 দীর্ঘ ডেটাটাইপ (8 বাইট বা 64-বিট)intএকটি উপাধি Int32এবং তাই সর্বদা 32 বিট হওয়ার নিশ্চয়তা দেওয়া হয়।
তারা উভয়ই আসলে সমার্থক, তবে আমি তাদের মধ্যে সামান্য পার্থক্যটি দেখতে পেয়েছি,
1) আপনি Int32তৈরি করার সময় ব্যবহার করতে পারবেন নাenum
enum Test : Int32
{ XXX = 1 // gives you compilation error
}
enum Test : int
{ XXX = 1 // Works fine
}
2) Int32সিস্টেম ঘোষণার আওতায় আসে। আপনি সরিয়ে ফেললে using.Systemআপনি সংকলন ত্রুটি পাবেন তবে এর ক্ষেত্রে নয়int
Int = Int32 -> আসল দীর্ঘ প্রকার
Int16 -> আসল ইনট
Int64 -> নতুন ডেটা টাইপ 64 বিট সিস্টেমের পরে উপলব্ধ
"ইনট" কেবল পিছিয়ে সামঞ্জস্যের জন্য উপলব্ধ। আমাদের প্রোগ্রামগুলি আরও সুনির্দিষ্ট করতে আমাদের সত্যই নতুন ইনট টাইপগুলি ব্যবহার করা উচিত।
---------------
পথে আরও একটি জিনিস আমি লক্ষ্য করেছি যে এখানে কোনও 16 শ্রেণীর নাম নেই Intযা ইন্টার 16, ইন্ট 32 এবং ইন্ট 64 এর মতো রয়েছে। TryParseপূর্ণসংখ্যার মতো সমস্ত সহায়ক ফাংশন আসে Int32.TryParse।
int16কেবল ব্যবহারের বিপরীতে মেমোরি রিসোর্স সংরক্ষণ করার জন্য পূর্ণসংখ্যাটি সংজ্ঞায়িত করা কি ভাল হবে নাint?