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

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

اشکال در انتساب داده‌ی منفی به متغیر بدون علامت

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

من برنامه‌ای نوشتم که تعداد افراد یک اداره رو از کاربر بگیره. برای ذخیره‌ی این تعداد از یه متغیر short int استفاده کردم.


short int num;
cout<<"Input number of employees : ";
cin>>num;

من این نوع رو بدون علامت تعریف کردم چون تعداد منفی کارمند خوب معنی نداره. اما هنوز هم کاربر می‌تونه عدد منفی به متغیر من بده. چرا؟
نکته‌ی جالبش اینه که برنامه هیچ خطایی نمی‌ده ولی بعد که مقدار متغیر رو چاپ می‌کنم یه مقدار خیلی عجیب به من می‌ده: ۶۵۲۱۵
سر درنمیارم. کسی می‌دونه اشکال کار از کجاست؟
در ++C زبانی بسیار کوچک‌تر و پاکیزه‌تر در تلاش برای خروج است. (Bjarne Stroustrup)
پرسیده شده پنجشنبه ۱۶ آذر ۱۳۹۱ در C++ توسط برنامه‌نویس  
بازتگ شده شنبه ۲۴ فروردین ۱۳۹۲ توسط admin

1 پاسخ

+1 امتیاز

الان اینجا که شما متغیرتون رو بدون علامت تعریف نکردین!
وقتی عدد صحصیح بدون علامت مد نظره، باید از unsigned استفاده بشه موقع تعریف اون متغیر، و به این معنیه که اهمیتی نداره علامتش چی باشه.و در صورتی که هیچی نذارین یعنی علامتش رو لحاظ میکنه.
ولی باید توجه کنین که در هر صورت عدد رو میخونه، برای اینکه کاربر نتونه عدد منفی وارد کنه، باید کار دیگه ای بکنین ک مثلا خودتون اینو چک کنید. واینجا هم عدد رو میخونه ولی احتمالا چون در محدوده‌ی unsigned short int نیست،یه همچین عددی چاپ میکنه.

پاسخ داده شده پنجشنبه ۱۹ بهمن ۱۳۹۱ توسط CPP_Crawler4