PDA

View Full Version : يه مشكل در چاپ عدد c++



R Yaghoobi
دوشنبه 28 اردیبهشت 1388, 13:14 عصر
سلام خدمت همه دوستان
من به يك مشكل خيلي مسخره توي c برخوردم، ممنون ميشم از دوستاني كه بتونند من را راهنمايي كنند.
بنظر شما خروجي برنامه زير چي بايستي باشه؟

char ch=(char)176;
int i=(int)ch;
printf("%d", i);

قاعدتا بايستي عدد 176 را چاپ كنه ولي عدد -80 را چاپ مي كنه.
ميشه يكي راهنماييم كنه و بگه چرا اين مقدار خراب ميشه و چطوري ميتونم بعد از تبديل كردنش به عدد صحيح باز همان عدد 176 را داشته باشم؟
پيشاپيش از مساعدتتون ممنونم

R Yaghoobi
دوشنبه 28 اردیبهشت 1388, 13:36 عصر
هي بچه ها من مشكلم حل شد.
بايستي اينجوري مي نوشتم:
unsigned char ch=176;

mehdi.mousavi
دوشنبه 28 اردیبهشت 1388, 14:21 عصر
سلام خدمت همه دوستان
من به يك مشكل خيلي مسخره توي c برخوردم، ممنون ميشم از دوستاني كه بتونند من را راهنمايي كنند.
بنظر شما خروجي برنامه زير چي بايستي باشه؟

char ch=(char)176;
int i=(int)ch;
printf("%d", i);

قاعدتا بايستي عدد 176 را چاپ كنه ولي عدد -80 را چاپ مي كنه.
ميشه يكي راهنماييم كنه و بگه چرا اين مقدار خراب ميشه و چطوري ميتونم بعد از تبديل كردنش به عدد صحيح باز همان عدد 176 را داشته باشم؟
پيشاپيش از مساعدتتون ممنونم

سلام.
کدی که نوشتید درسته، فقط کافی بود printf رو اینطوری می نوشتید:


printf("%d", (unsigned char)i);

یادتون باشه، char، بازه اعداد -128 تا 127 رو میتونه پوشش بده. تو حالتیکه برنامه با سوئیچ /J کامپایل بشه، بازه مزبور میشه 0 تا 255.

موفق باشید.