View Full Version : تعریف یک متغیر بزرگ
Special
چهارشنبه 10 بهمن 1386, 10:58 صبح
با عرض سلام و خسته نباشید
من میخوام یه متغییر از نوع صحیح تعریف کنم که تا عدد 999 میلیارد در اون جا بشه
من اینطوری تعریف کردم ولی جواب نداد. unsigned long int x
چیکار باید بکنم؟
Nima_NF
چهارشنبه 10 بهمن 1386, 12:05 عصر
بستگی به کامپایلری دارد که از آن استفاده می کنید، انواع زیر تا 20 رقم یعنی 64 بیت هستند که از میلیارد میلیارد هم بیشتر می شود:
long long
unsigned long long
نوع مایکروسافتی آن:
__int64
PC2st
چهارشنبه 10 بهمن 1386, 15:40 عصر
نوع long double را امتحان کنید.
Special
چهارشنبه 10 بهمن 1386, 16:03 عصر
من با Microsoft Visual C++ 6.0 کار میکنم
long long رو اصلا قبول نمیکنه و میگه یه long اضافیه.
int64__رو هم که میزنم مثلا برای این برنامه :
#include<iostream.h>
#include<conio.h>
void main(){
__int64 n;
cout<<"enter number:";
cin>>n;
cout<<n;
getch ();
}
این دوتا error رو میده:
( error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '__int64' (or there is no acceptable conversion
error C2593: 'operator <<' is ambiguous
long double هم ،برای اعداد اعشاریه. من عدد صحیح میخوام
Nima_NF
چهارشنبه 10 بهمن 1386, 19:42 عصر
تا جای ممکن از جدید ترین کامپایلر استفاده کنید تا مشکلات شما کمتر شود، این یک bug گزارش شده ، که در VC6 نمی شد به درستی از آن برای cout استفاده کرد (احتمالا سرویس پک های آن حلش کردند).
دو راه برای آن دارید:
1) راه ساده تر به جای cout و نیز استفاده از <iostream>:
printf("%I64i", x);
2) روش پیشنهادی مایکروسافت: (ضمنا از <iostream> استفاده کنید نه <iostream.h>)
#include<iostream>
using namespace std;
#ifdef WORKAROUND
std::ostream& operator<<(std::ostream& os, __int64 i )
{
char buf[20];
sprintf(buf,"%I64d", i );
os << buf;
return os;
}
#endif
int main(){
__int64 i64;
cout << i64 ;
return 0;
}
Nima_NF
چهارشنبه 10 بهمن 1386, 19:46 عصر
ضمنا long long از استاندارد C99 (سال 1999) به آن اضافه شده و در اختیار کامپایلر هایی که بعد آن عرضه شدند قرار دارد.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.