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

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

چرا تبدیل به long int کار نمی‌کنه؟

0 امتیاز
98 نمایش

من کد زیر رو نوشتم و حاصل رو به صورت long int در نظر گرفتم که بتونه مقدار تولید شده رو ذخیره کنه اما مقدار درست رو نشون نمی‌ده چرا؟

int x = 100000, y = 100000;
long int z = x * y;
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده چهارشنبه ۲۳ مرداد ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

ابتدا ضرب x در y انجام می‌شه که چون دوتاشون int هستن حاصل هم به صورت int در نظر گرفته می‌شه که یه سرریز رو به وجود می‌اره. حالا این سرریز به long int z منتسب می‌شه که باید یک تبدیل انجام بشه.
بنابراین تبدیل از مقدار سرریز int به long int انجام می‌شه نه از مقدار واقعی ضرب.

برای جلوگیری از سرریز باید تبدیل قبل از انتساب انجام بشه

long int z = z * (long int)b;
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده چهارشنبه ۲۳ مرداد ۱۳۹۲ توسط prodo