اطلاعیه

Collapse
No announcement yet.

باگ عجیب در نرم افزار کیل

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    باگ عجیب در نرم افزار کیل

    سلام
    در یکی از برنامه ها نیاز داشتم که متغیری را یک واحد یک واحد کاهش بدم و شرط گذاشتم که اگر از 0 کم تر یا مساوی شد مقدارش رو برابر با 0 قرار بده ولی در عمل این طوری نشد و مجبور شدم به شرطم
    یه چیزی اضافه کنم

    char flag_ragham=0,flag_function=0;
    flag_function--;
    if(flag_function<0 || flag_function==255) flag_function=0;

    همان طور که می بینید من مجبور شدم با if بالا مشکلم رو حل کنم در صورتی که باید

    if(flag_function<=0) flag_function=0;

    با این if باید مشکل بنده حل می شد
    خود کیل هم اخطار می ده که نیازی نیست if اول رو بنویسم و توصیه اش همون if دوم هست ولی ظاهرا درکامپایل مشکل داره
    چند جای برنامه مجبور شدم این طوری بنویسم
    اللهم صل علی محمد و ال محمد و عجل فرجهم
    پیامبر اکرم(ص):زکات علم نشر آن است.
    در کشور های غربی انتقال تجربیات و دانش به افراد مبتدی یک پیشرفت محسوب شده و به آن مدیریت دانش می گویند. ولی متاسفانه این فرهنگ هنوز در کشور ایران رایج نشده است !!!

    #2
    پاسخ : باگ عجیب در نرم افزار کیل

    نوشته اصلی توسط seyed saeed نمایش پست ها
    سلام
    در یکی از برنامه ها نیاز داشتم که متغیری را یک واحد یک واحد کاهش بدم و شرط گذاشتم که اگر از 0 کم تر یا مساوی شد مقدارش رو برابر با 0 قرار بده ولی در عمل این طوری نشد و مجبور شدم به شرطم
    یه چیزی اضافه کنم

    char flag_ragham=0,flag_function=0;
    flag_function--;
    if(flag_function<0 || flag_function==255) flag_function=0;

    همان طور که می بینید من مجبور شدم با if بالا مشکلم رو حل کنم در صورتی که باید

    if(flag_function<=0) flag_function=0;

    با این if باید مشکل بنده حل می شد
    خود کیل هم اخطار می ده که نیازی نیست if اول رو بنویسم و توصیه اش همون if دوم هست ولی ظاهرا درکامپایل مشکل داره
    چند جای برنامه مجبور شدم این طوری بنویسم
    تو خیلی از کامپایلرا، char بصورت پیشفرض unsigned char تلقی میشه. پس نمیتونه منفی بشه. به محض نوشتن flag_function--، چون مقدار اولیه ش صفر بوده، سرریز میکنه (ته ریز میکنه) میشه 255. به همین دلیل if دوم کار نمیکنه.
    تو تنظیمات، زبانه C/C++ گزینه ی plain char is signed رو اگر تیک بزنید، اونوقت char مقدارش بین -128 تا 127 میشه و میتونه منفی بشه.
    Si vis pacem, para bellum

    دیدگاه


      #3
      پاسخ : باگ عجیب در نرم افزار کیل

      نوشته اصلی توسط tiranoid نمایش پست ها
      تو خیلی از کامپایلرا، char بصورت پیشفرض unsigned char تلقی میشه. پس نمیتونه منفی بشه. به محض نوشتن flag_function--، چون مقدار اولیه ش صفر بوده، سرریز میکنه (ته ریز میکنه) میشه 255. به همین دلیل if دوم کار نمیکنه.
      تو تنظیمات، زبانه C/C++ گزینه ی plain char is signed رو اگر تیک بزنید، اونوقت char مقدارش بین -128 تا 127 میشه و میتونه منفی بشه.

      خیلی ممنون تست می کنم
      این رو نمی دونستم
      اللهم صل علی محمد و ال محمد و عجل فرجهم
      پیامبر اکرم(ص):زکات علم نشر آن است.
      در کشور های غربی انتقال تجربیات و دانش به افراد مبتدی یک پیشرفت محسوب شده و به آن مدیریت دانش می گویند. ولی متاسفانه این فرهنگ هنوز در کشور ایران رایج نشده است !!!

      دیدگاه


        #4
        پاسخ : باگ عجیب در نرم افزار کیل

        optimize کامپایلر رو صفر کن.
        تنها موردی که همه آدما یقین دارن خدا در حقش زیاد لطف کرده
        داشتن عقله زیادتر از دیگر آدم ها است

        دیدگاه

        لطفا صبر کنید...
        X