PDA

View Full Version : حرفه ای: خطاهای گمراه کننده در C++



hosseinkhosravi
پنج شنبه 30 مهر 1388, 11:37 صبح
C++ زبانی است که دست برنامه نویس را کاملا باز گذاشته و همین موضوع سبب می شود که برنامه نویس اشتباهاتی بکند که نه خودش می فهمد و نه کامپایلر:افسرده: . راه اندازی این مبحث به منظور اشتراک گذاشتن اشتباهاتی است که ممکن است ساعتها ذهن شما را درگیر کرده باشد و وقتی متوجه اشتباه خودتان شده اید با تعجب گفته اید ای داد چه اشکال ساده ای:قهقهه: ما رو علاف کرده بود.
جستجویی که کردم چنین موضوعی در تالار نبود، لیکن اگر از قبل بوده طبعا این موضوع باید بسته بشه!

hosseinkhosravi
پنج شنبه 30 مهر 1388, 11:42 صبح
یکی از کاربردهای اشاره گرها، تخصیص حافظه است. مثلا برای تخصیص 50 خانه حافظه از نوع int به صورت زیر عمل می کنیم:

int* data = new int(50);ولی این کد 50 خانه حافظه تخصیص نمی دهد! تنها یک خانه حافظه تخصیص می دهد که مقدار آن خانه هم با عدد 50 پر می شود! چرا؟
چون به جای [] از () استفاده کرده ایم! درستش این است

int* data = new int[50];

hosseinkhosravi
پنج شنبه 30 مهر 1388, 11:46 صبح
خطای دیگری که معمولا مبتدیان دچار آن می شوند و گاهی اوقات کامپایلر هم نمی فهمد استفاده از عملگر تخصیص به جای مساوی است. مثلا می خواهیم چک کنیم آیا x برابر 10 است می نویسیم:

if (x = 10)
//do something
لیکن همیشه بدنه if اجرا می شود! دلیلش این است که به جای استفاده از عملگر مساوی == از عملگر تخصیص = استفاده کرده ایم و به این ترتیب ابتدا x برابر 10 شده و چون 10 مقدار غیر صفر است، بدنه if همواره اجرا خواهد شد!