50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

چند سوال درباره داده ها در سی شارپ

سلام خدمت تمام آی تی پرویی های عزیز. بنده در حال مطالعه مبحث داده ها در زبان برنامه نویسی سی شارپ بودم که یک سری سوالات برام پیش اومد. ممنون میشم اگه اساتید پاسخ بدن.

1- حجم نوع داده String چقدر است؟ (چند بیت؟)

2- رنج مقدار داده های اعشاری double و float چقد است؟ (درحقیقت چند رقم اعشار و تا چه عددی میتوان در آنها ریخت؟) چون من هرچقدر خود عدد و اعشارش رو بزرگ میکردم اروری دریافت نمیکردم!

3- تفاوت var با object (در صورت امکان لطف کنید توضیح کوتاهی نیز در مورد هر یک از آنها بدهید)

4- این default value یا مقدار پیش فرض متغیر ها چیه؟ من چند جا دیدم مثلا میگن مقدار پیشفرض متغیری از جنس int عدد 0 هست. اما من وقتی عملا یک متغیر از همین نوع تعیین کردم و بهش مقدار ندادم و خواستم چاپش کنم به من ارور Use of unassigned local variable داد!


5- آخرین سوال که مهمترین سوال هم هست:

آیا مقدار حجم یا همان سایز متغیر ها (مثلا متغیر های عددی) در صورتی که مقدار آنها یکی باشد، متفاوت است؟

مثلا من میدونم که متغیر int سایزش 32 بیت هست و متغیر long سایزش 64 بیت.

اگر من دو متغیر به صورت زیر داشته باشم:

int myInt = 15;

long myLong = 15;

آیا مقدار حافظه ای که آنها در حافظه رم اشغال میکنند (سایز) یکیست یا خیر؟

و سوال دیگه اینکه در صورتی که من دو متغیر از یک جنس و با مقدار های متفاوت داشته باشم چطور؟ برای مثال:

int myInt1 = 5;

int myInt2 = 2147483647;

آیا مقدار حافظه ای که این دو در رم اشغال می کنند (سایز) آنها یکیست یا خیر؟

پرسیده شده در 1396/04/31 توسط

1 پاسخ

1

سلام و عرض ادب، در مورد سوالاتی که پرسیدی به ترتیب:

  1. حجم داده های نوع رشته بر اساس تعداد کاراکترهای رشته مشخص میشن و البته بستگی به نوع رشته که UTF باشه یا نه فرق میکنه، چون کاراکترهای UTF مثل کاراکترهای فارسی هر یک کاراکتر دو بایت جا میگیره، اما کاراکترهای ASCII مثل انگلیسی یک بایت اشغال می کنن.
  2. پیشنهاد می کنم برای میزان فضای اشغال شده توسط هر نوع داده و رنج قابل استفاده به این لینک مراجعه کنی.
  3. در مورد var و object تو دوره مقدماتی توضیح داده بودم و فکر کنم جا انداختیش، اما فرقشون اینه که: نوع object یه نوع داده اصلی و ریشه و در حقیقت پدر همه نوع های داده تو دات نت هست و هر مقداری میشه داخلش ریخت، برای مثال، شما یک متغیر از نوع object تعریف کنی و داخلش عدد 12 رو بریزی، در ادامه کد می تونی یک مقدار از نوع رشته داخلش قرار بدی، اما کلمه کلیدی var به کامپایلر این اجازه رو میده که بر اساس مقدار ریخته شده داخل متغیر نوعش رو تشخیص بده، فرقش با object اینه که شما وقتی متغیری با var تعریف کردی و داخلش مقداری از نوع int ریختی، در ادامه کد نمی تونی مقداری غیر از int داخلش بریزی. نوع های object مکانیزمی به نام boxing و unboxing هم دارن که داخل سایت در موردش مطلب هست.
  4. منظور از مقدار پیش فرض، مقداری هست که شما بوسیله initialize کردن یک متغیر بوسیله کلمه کلیدی new داخلش قرار میگیره یا استفاده از کلمه کلیدی default داخل نوع های جنریک، شما وقتی متغیری تعریف می کنید و مقداری داخلش قرار نمیدید طبیعی هست که پیغام خطا دریافت کنید، در هر صورت متغیر باید یا مقدار دهی بشه یا با کلمه کلیدی new مقدار پیش فرض بگیره.
  5. شما هر متغیری که تعریف کنید به اندازه همون نوع داخل حافظه فضا اشغال می کنه و ربطی به مقدار نداره، نوع int به میزان 4 بایت یا 32 بیت و نوع long به میزان 8 یا 64 بیت فضا اشغال میکنه، حتی اگر هر دو مقدار 5 رو داشته باشند.
پاسخ در 1396/05/01 توسط

پاسخ شما