Int, Int16, Int32 এবং Int64 এর মধ্যে পার্থক্য কী?


উত্তর:


348

প্রতিটি ধরণের পূর্ণসংখ্যার স্টোরেজ ক্ষমতার একটি আলাদা পরিসীমা থাকে

   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একই পদ্ধতিতে পরিবর্তনগুলি পরিবর্তনের যত্ন নেওয়া উচিত ।

ফলস্বরূপ কোডটি অভিন্ন হবে: পার্থক্যটি নির্ভুলভাবে পঠনযোগ্যতা বা কোড উপস্থিতি।


1
যদি আপনি জানেন যে মানটি 65,535 (স্বাক্ষরিত) বা −32,768 থেকে 32,767 (স্বাক্ষরযুক্ত) এর বেশি হবে না তবে int16কেবল ব্যবহারের বিপরীতে মেমোরি রিসোর্স সংরক্ষণ করার জন্য পূর্ণসংখ্যাটি সংজ্ঞায়িত করা কি ভাল হবে না int?
ʙᴀᴋᴇʀ ʙᴀᴋᴇʀ

8
int এবং int32 সমার্থক হতে পারে তবে এগুলি হওয়ার দরকার নেই। আজকাল, বেশিরভাগ বিক্রি হওয়া সিস্টেমগুলি 64৪-বিট হয় সেই ক্ষেত্রে একটি ইনট 64৪ বিট হবে।
মার্টিজন ওটো

4
ম্যাথু টি বেকার এবং নিজেকে মত কোন যারা অন্যদের এখানে এসেছে যা একটি কার্যকারিতা দৃষ্টিকোণ থেকে ব্যবহার করার সিদ্ধান্ত নেন চেষ্টা করার জন্য, আপনি এই পোস্টের প্রস্তাব দেওয়া পূর্ণসংখ্যা অনেক ক্ষেত্রে Int16 অধিক কার্যকরী হয় পরীক্ষা করা উচিত: stackoverflow.com/questions/129023/ নেট-ইন্টিজার-বনাম-ইন্ট 16
টনি এল

19
প্রশ্নটি উত্তর # সি। C #, intহয় সবসময় Int32 , সিস্টেম নির্বিশেষে। সম্ভবত আপনি সি ++ এর কথা ভাবছেন?

9
@ ম্যাটবেকার: সাধারণভাবে, আধুনিক কম্পিউটারগুলিতে একটি ইন্টি 16 একটি ইন্টিও 32 (এবং প্রকৃতপক্ষে কোনও ইন্টার 64৪) হিসাবে অনেক বেশি জায়গা নেয় কারণ বেশিরভাগ ক্রিয়াকলাপ কার্যকর করার জন্য, আমরা অ্যাক্সেসগুলি 32 বা 64 বিটের সীমানায় সংযুক্ত করার জন্য ডেটা চারপাশে প্যাড করি we (যথাক্রমে 32 বা 64 বিট মোডে)। এর কারণ হ'ল স্বাক্ষরযুক্ত অ্যাক্সেসগুলি কিছু আর্কিটেকচারে হাস্যকরভাবে অযোগ্য এবং অন্যের পক্ষে সম্ভব নয়।
জোয়েল 21

118

এখানে আসল পার্থক্যটিই আকার। এখানকার সমস্ত প্রকারের মধ্যে স্বাক্ষরিত পূর্ণসংখ্যা মানগুলি থাকে যা বিভিন্ন আকারের হয়

  • Int16: 2 বাইট
  • Int32এবং int: 4 বাইট
  • Int64 : 8 বাইট

Int64এবং বাকিগুলির মধ্যে একটি ছোট পার্থক্য রয়েছে । একটি 32 বিট প্ল্যাটফর্মের জন্য কোনও Int64স্টোরেজ লোকেশনে অ্যাসোনম হওয়ার গ্যারান্টি নেই। এটি অন্যান্য ধরণের সমস্তর জন্য গ্যারান্টিযুক্ত।


যদি আমি ব্যবহার Int64মধ্যে 32 bit Windows Operating Systemতারপর বিষয় আমি জেল হতে পারে কি? কোন উদাহরণ আছে?
শাইজুট

70

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 # প্রত্যয় না।
আরবিটি

14

জেফ্রি রিচারের মতে (.NET ফ্রেমওয়ার্ক বিকাশের অন্যতম অনুদানকারী) 'সি # এর মাধ্যমে সিএলআর' বইয়ের বই:

সিটি # সংকলক দ্বারা অনুমোদিত এক প্রাথমিক টাইপ, যখন অন্তর্গত 32 ফ্রেমওয়ার্ক ক্লাস লাইব্রেরি টাইপ (সিএলএস মেনে চলতে থাকা ভাষাগুলিতে উপলব্ধ)। প্রকৃতপক্ষে, সংকলনের সময় int 32 এ অনুবাদ করে।

এছাড়াও,

সি # তে, System.Int64 এ দীর্ঘ মানচিত্র, তবে ভিন্ন প্রোগ্রামিং ভাষায় দীর্ঘগুলি 16 ইন্ট 16 বা ইন্ট 32 এ মানচিত্র করতে পারে। প্রকৃতপক্ষে, সি ++ / সিএলআই অন্তত 32 হিসাবে বিবেচনা করে।

আসলে, বেশিরভাগ (.NET) ভাষা এমনকি কীওয়ার্ড হিসাবে দীর্ঘ ব্যবহার করে না এবং এটি ব্যবহার করে এমন কোড সংকলন করে না।

আমি এই লেখক এবং অনেক নেট সাহিত্যে দেখেছি। নেট এফসিএল প্রকারের (যেমন, আন্তঃ 32) ভাষা-নির্দিষ্ট আদিম ধরণের (যেমন, আন্তঃ) মূলত আন্তঃব্যবহারযোগ্যতার উদ্বেগের উপরে prefer


8

কিছুই নেই। প্রকারের মধ্যে একমাত্র পার্থক্য হ'ল তাদের আকার (এবং, সুতরাং, তারা উপস্থাপন করতে পারে এমন মানের পরিসীমা)।


8

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 এর উপর নির্ভর করুন!


7
প্রথম উদাহরণটি কেন সেভাবে কাজ করে তা স্পষ্ট করার জন্য: প্রথম আক্ষরিক 1, 2 এবং 3 shortএগুলিকে অ্যারেতে ফিট করার জন্য স্পষ্টভাবে নিক্ষেপ করা হয়, যখন দ্বিতীয় আক্ষরিক 1টিকে একটি সাধারণ হিসাবে রেখে দেওয়া হয় int(int)1সমান বিবেচনা করা হয় না করতে (short)1, (short)2, (short)3, এইভাবে ফল -1।

4
সি # সংস্করণে একই রকম সমন্বয় উপলভ্য হবে তবে এফওয়াইআই একটি সাধারণ ধরণের স্পেসিফায়ার এই সমস্যাটিকে সমাধান করে: Array.IndexOf(new Int16(){1,2,3}, 1S) Array.IndexOf(new Int32(){1,2,3}, 1I) Array.IndexOf(new Int64(){1,2,3}, 1L)প্রত্যাশার মতো সমস্ত কাজ।
মার্ক হার্ট

1
এবং যেগুলি কাজ করে না তারা Object[],Objectওভারলোড ব্যবহার করে । সি শার্প পরোক্ষভাবে উত্থাপন করা হয় intএকটি থেকে longপ্রয়োজন হলে (এবং আরো একটি উত্থাপন shortএকটি থেকে intবা long), কিন্তু পরোক্ষভাবে ব্যবহার নিক্ষেপ করবে না, objectপরিবর্তে জমিদার। ইউনিফর্মের প্রকার সরবরাহ করার সাথে সাথে Option Strict Onবা Offভিবি কেবল টাইপড ওভারলোড ব্যবহার করবে, অন্যথায় এটি objectওভারলোডটি ব্যবহার করে ।
মার্ক হার্ট

আপনার উত্তর বিভ্রান্তিকর। কোডটি বিভিন্ন ধরণের মানগুলির তুলনা করে। উপসংহারটি for Array.IndexOf comparisons, only trust Int32!ভুল। যদি আপনি 1সম্পর্কিত অ্যারে প্রকারের সাথে চূড়ান্ত যুক্তিটি ফেলে দেন তবে এটি প্রত্যাশার মতো কাজ করে।
ডন চ্যাডল

এটি একটি অত্যন্ত আকর্ষণীয় এবং অপ্রত্যাশিত আচরণ (যেহেতু দীর্ঘমেয়াদী কাজ করে তবে সংক্ষিপ্ত থেকে স্বল্পভাবে কাজ করে না) অতএব আপট!
sth_Weird

7

সম্পাদনা: এটি সি # এর পক্ষে একেবারেই সত্য নয়, আমি এই প্রশ্নের উত্তর দেওয়ার সময় আমি যে ট্যাগটি মিস করেছি - যদি সেখানে আরও # সি নির্দিষ্ট উত্তর থাকে তবে দয়া করে তার পক্ষে ভোট দিন!


এগুলি সমস্ত বিভিন্ন আকারের পূর্ণসংখ্যার প্রতিনিধিত্ব করে।

তবে, একটি খুব ছোট পার্থক্য আছে।

ইন্ট 16, ইন্ট 32 এবং ইন্ট 64 এর একটি নির্দিষ্ট আকার থাকে।

আপনি যে আর্কিটেকচারের জন্য সঙ্কলন করছেন তার উপর কোনও ইন্টির আকার নির্ভর করে - সি স্পেকটি কেবল একটি সংক্ষিপ্ত আকারকে বৃহত্তর বা সমান হিসাবে সংজ্ঞায়িত করে যদিও বাস্তবে এটি আপনার প্রসেসরের যে প্রস্থটি আপনি লক্ষ্য করছেন সেটি সম্ভবত 32 বিট তবে আপনার জানা উচিত এটা নাও হতে পারে


1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটিই কেবলমাত্র সত্য যা সঠিক
mjs

2
না, এটি সি # এর পক্ষে সত্য নয়। এসি # ইন্টি সর্বদা আকারে 32 বিট থাকে। সি এর জন্য, হ্যাঁ আপনাকে এই জটিলতাটি মোকাবেলা করতে হবে এবং আপনি প্রায়শই সি কোডে ম্যাক্রোগুলি দেখতে ভেরিয়েবল ইনট আকারের সাথে মোকাবেলা করতে পারেন। দেখুন ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf পৃষ্ঠা 18
Ananke

@ অানঙ্কে আহ, সি # ট্যাগ মিস করেছেন। আশা করি আমি
উত্তরে

6
  1. intএবং int32এটি এক এবং একই (32-বিট পূর্ণসংখ্যা)
  2. int16 সংক্ষিপ্ত ইনট (2 বাইট বা 16-বিট)
  3. int64 দীর্ঘ ডেটাটাইপ (8 বাইট বা 64-বিট)

2
int 32 বিট হওয়ার নিশ্চয়তা নেই।
এমজেএস

8
@ এমজেএস, এটি কেবল সত্য নয়। সি # তে, intএকটি উপাধি Int32এবং তাই সর্বদা 32 বিট হওয়ার নিশ্চয়তা দেওয়া হয়।
ডেভিড আরনো

আসলে এমজেএস যা বলেছে তা সঠিক, আইএনটি মানে xX বা x64 সিস্টেমের উপর ভিত্তি করে পূর্ণসংখ্যা, সুতরাং আপনার সিস্টেমটি যদি x64 হয় তবে intটি ইন্টার64 হবে, সুতরাং 32 এর গ্যারান্টি দেওয়া হয় না .. আপনি x32 এ ইন্ট 32 রাখলে সর্বদা ইন্টি 32 হবে ।
যোগুরতু

5
না, ডেভিড আরনো যা বলেছেন তা সঠিক। সি # ভাষা 32-বিট পূর্ণসংখ্যার (ইন্ট 32) অর্থ নির্দিষ্ট করে 'ইনট' সংজ্ঞায়িত করে। অন্যান্য ভাষা (সি / সি ++ ইত্যাদি) এটি নির্দিষ্ট নাও করতে পারে তবে এই প্রশ্নটিকে 'সি #' ট্যাগ করা হয়েছে।
থিও ব্রিংকম্যান

@ থিব্রিংকম্যান কারেক্ট, সি # এর অবিচ্ছেদ্য সংখ্যার ধরণের মাইক্রোসফ্টের পৃষ্ঠাটি এখানে: ডকস.মাইক্রোসফটকম
ম্যাক্স

5

তারা উভয়ই আসলে সমার্থক, তবে আমি তাদের মধ্যে সামান্য পার্থক্যটি দেখতে পেয়েছি,

1) আপনি Int32তৈরি করার সময় ব্যবহার করতে পারবেন নাenum

enum Test : Int32
{ XXX = 1   // gives you compilation error
}

enum Test : int
{ XXX = 1   // Works fine
}

2) Int32সিস্টেম ঘোষণার আওতায় আসে। আপনি সরিয়ে ফেললে using.Systemআপনি সংকলন ত্রুটি পাবেন তবে এর ক্ষেত্রে নয়int


-8

Int = Int32 -> আসল দীর্ঘ প্রকার

Int16 -> আসল ইনট

Int64 -> নতুন ডেটা টাইপ 64 বিট সিস্টেমের পরে উপলব্ধ

"ইনট" কেবল পিছিয়ে সামঞ্জস্যের জন্য উপলব্ধ। আমাদের প্রোগ্রামগুলি আরও সুনির্দিষ্ট করতে আমাদের সত্যই নতুন ইনট টাইপগুলি ব্যবহার করা উচিত।

---------------

পথে আরও একটি জিনিস আমি লক্ষ্য করেছি যে এখানে কোনও 16 শ্রেণীর নাম নেই Intযা ইন্টার 16, ইন্ট 32 এবং ইন্ট 64 এর মতো রয়েছে। TryParseপূর্ণসংখ্যার মতো সমস্ত সহায়ক ফাংশন আসে Int32.TryParse

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.