PDA

View Full Version : سوال: اشکال



amirsoft1
شنبه 27 تیر 1388, 09:33 صبح
با سلام
لطفا کد زیر را ببینید و بگویید چرا کامپایلر خطا نمی گیرد و عدد را هم درست در خروجی چاپ نم کند

int b=887979879;
int a;
a = b * b * b * b * b * b * b * b * b * b * b*b;
Console.WriteLine("a is:{0}", a);
Console.ReadKey();

جواب یک عدد غیر منطق = 960766881

:اشتباه::اشتباه:

Unknownlive
شنبه 27 تیر 1388, 10:36 صبح
بابا مومن یه نیگاه به نوع داده ای بکن نوع داده int و محدوده پشتیبانی شماحدودا از -32000 تا +32000 هزاره اما این عدد شما ترکونده !!! حداقل Unsign می کردی و از Int 64 استفاده می کردی ولی فکر نکنم باز هم جواب گو باشه ؟ نمی دونم چرا پیغام Overflow نداده از کدام کامپایلر 2005 یا 2008 استفاده می کنی؟

hozouri
شنبه 27 تیر 1388, 10:57 صبح
بابا مومن یه نیگاه به نوع داده ای بکن نوع داده int و محدوده پشتیبانی شماحدودا از -32000 تا +32000 هزاره اما این عدد شما ترکونده !!! حداقل Unsign می کردی و از Int 64 استفاده می کردی ولی فکر نکنم باز هم جواب گو باشه ؟ نمی دونم چرا پیغام Overflow نداده از کدام کامپایلر 2005 یا 2008 استفاده می کنی؟

بابا دمت گرم درست اطلاع رسانی کنید -2147483648 تا +2147483647 محدوده متغیر int است.
دوران برنامه نویسی عصر قدیم گذشته ...

hozouri
شنبه 27 تیر 1388, 11:06 صبح
با سلام
لطفا کد زیر را ببینید و بگویید چرا کامپایلر خطا نمی گیرد و عدد را هم درست در خروجی چاپ نم کند

int b=887979879;
int a;
a = b * b * b * b * b * b * b * b * b * b * b*b;
Console.WriteLine("a is:{0}", a);
Console.ReadKey();

جواب یک عدد غیر منطق = 960766881

:اشتباه::اشتباه:

از int64 یا long استفاده کن این مسئله برطرف میشه به این حالتی هم که برای شما پیش آمد می گن Over Flow یا لبریز شدن که با یه بلوک checked می تونی چک کنی که اگر متغیر over flow شد یه exeption تولید بشه

amirsoft1
شنبه 27 تیر 1388, 11:16 صبح
من راه درست کردن را بلد بودم می خواستم بدونم چرا خطا نگرفته که دوستمان جواب داد باید در این موارد از بلاک checked استفاده کرد
از همگی ممنونم

Unknownlive
شنبه 27 تیر 1388, 11:52 صبح
ببخشید من محدوده VB را گفتم اما بازهم مشکل همینه و درست می گید باید از بلاک Checked استفاده بشه من اشتباهی VB6 را گفتم چون به یکی دارم یاد می دم