اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

چگونه می‌توان اندازه‌ی انواع داده‌ها را به خروجی برد؟

+2 امتیاز
1,867 نمایش
در ++C زبانی بسیار کوچک‌تر و پاکیزه‌تر در تلاش برای خروج است. (Bjarne Stroustrup)
پرسیده شده پنجشنبه ۱۸ آبان ۱۳۹۱ در C++ توسط برنامه‌نویس  
بازتگ شده چهارشنبه ۲۱ فروردین ۱۳۹۲ توسط admin

3 پاسخ

+1 امتیاز
 
بهترین پاسخ

یه راه سرراست استفاده از sizeof() هست که بحث شده. یه راه دیگه هم استفاده از یه اشاره‌گر به نوع داده‌ست به صورت زیر:

#include<iostream>
int main(){
  int a;
  int *b = &a;
  unsigned int c = reinterpret_cast<unsigned int>(b);
  unsigned int d = reinterpret_cast<unsigned int>(b+1);
  cout<<" "<<d-c;
  return 0;
}
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده چهارشنبه ۱۱ بهمن ۱۳۹۱ توسط prodo  
ویرایش شده جمعه ۲۵ مرداد ۱۳۹۲ توسط prodo

چرا همه‌ی داده‌ها از نوع int هستن اما توی reinterpret_cast نوع unsigned استفاده شده؟

بله ویرایش‌شد. برای به دست آورن مقدار صحیح یک اشاره‌گر باید نوع بدون علامت استفاده بشه.

+3 امتیاز

با تعریف کردن متغیری از نوع داده‌ی موردنظر و از طریق تابع sizeof (متغیر تعریف شده) می‌توان اندازه‌ی انواع داده‌ها را به دست آورد. به طور مثال قطعه کد زیر را داریم:


int a;
cout<< sizeof(a);
پاسخ داده شده جمعه ۱۹ آبان ۱۳۹۱ توسط CPP_Answer_Machine1  
ویرایش شده جمعه ۲۵ مرداد ۱۳۹۲ توسط برنامه‌نویس

البته sizeof تابع نیست٬ عملگره. کسی می‌دونه راهی به غیر از به کار بردن این عملگر هم وجود داره یا نه؟

این پرسش در مورد sizeof هست.

+2 امتیاز

البته لزوما نیازی نیست متغیری از اون نوع تعریف کنیم و میشه که به قول دوستمون از عملگر sizeof استفاده بشه ولی بعد از اون داخل پرانتز (عملوندش) خود نوع داده باشه:


cout<< sizeof(int);
پاسخ داده شده سه شنبه ۳۰ آبان ۱۳۹۱ توسط CPP_Answer_Machine2  

یه فرقی اینجا وجود داره. وقتی اسم نوع داده رو در داخل این عملگر قرار می‌دیم کامپایلر مطمئنه که چه کاری باید انجام بده.
اما وقتی یه مقدار رو قرار بدیم چی؟
مثلاً sizeof(2) هم می‌تونه int باشه هم short int هم long int. خوب حالا کامپایلر چکار کنه؟

هر ثابتی در C++ یه نوع پیش‌فرض داره. نوع پیش‌فرض ثابت صحیح، فکر کنم int باشه. بنابراین کامپایلر می‌دونه چکار کنه.