تفاوت int و long int

emad_67

Member
می خواستم بدونم که تفاوت int و long int چیه؟
طبیعتا باید long int تعداد بزرگتری رو قبول کنه ولی وقتی من در c++ میزنم که ماگزیمم مقداری رو که قبول میکنه رو چاپ کنه برای هر دو نوع عدد 2147483647 رو چاپ میکنه که نشون میده گستره عددی هر دو یکی هست پس فرق این دو در چیه؟
این برنامه رو هم ببینید
کد:
#include <iostream.h>
void main()
{
   int a=3000000000;
   long int b=3000000000;
   cout<<a<<endl
	   <<b<<endl;
}
که یه عددی به int دادم که در گستره عددی اون نگنجه و به b هم همون عدد رو دادم ولی b هم اونو قبول نمیکنه
مشکل چیه؟
 

arash_j13

Member
long int همیشه چهار بایت هست ولی طول int بستگی به طول کلمه ماشینی داره که روش برنامه کامپایل می شه مثلا اگه برای ماشین 16 بیتی کامپایل کنید مثل کامپایلر های قدیمی تحت داس int دو بایت خواهد بود و برای ماشین های جدید تر 32 بیتی چهار بایت این یعنی اینکه در یه ماشین 32 بیتی با یه کامپایلر 32 بیتی هیچ فرقی بین int و long int وجود نداره اگه می بینید هنوز تو دانشگاه ها int رو دو بایت به حساب می یارن به خاطر عقب موندگی دانشگاه های ما و استفاده از کامپایلر های قدیمی تو دانشگاه ها است

در مورد عدد سه ملیارد هم این عدد تو چهار بایت جا نمی شه مگر اینکه از کامپایلر بخواید از بیت علامت هم برای نگه داری عدد استفاده کنید که باید بنویسید
کد:
unsigned long int i=3000000000;

یا اینکه از نوع داده هست بایتی استفاده کنید
کد:
long long int  i=3000000000;
 

جدیدترین ارسال ها

بالا