ورود

View Full Version : خروجي اين سه خط كد چرا اين ميشه؟



one hacker alone
یک شنبه 06 فروردین 1391, 10:56 صبح
سلام
#include <iostream.h>
main(){
int a=1000;
char b;
b=a;
a=b;
cout<<a;
}
ببينيد خروج اين كد -24 ميشه دليلش هم اينه كه 16 بيتي كه براي a در نظر گرفته شده در حين تبديل فقط 8 بيت ارزش پايين اون در b كپي ميشه و وقتي به a برميگرده اين 8 بيت به با ارزش ميره و 8 بيته ديگه كلا صفر ميشه
اما من مشكلم در عدد -24 هست كه چرا -24؟ در واقع در ميخوام بدونم خروجي نهايي a چقدره كه ميشه -24

amin1softco
یک شنبه 06 فروردین 1391, 12:05 عصر
شما باید با نحوه ذخیره سازی اعداد صحیح آشنا بشید یعنی ما اول مشخص می کنیم منفی یا مثبته یک بیت برای این فک کنم در نظر می گرفتیم ولی اگر از unsigned int استفاده کنید به نظرم مشکلتون حل می شه قبلاً (چند سال پیش) خیلی رویه این زمینه بحث کردیم این وبلاگ http://irancplusplus.blogspot.com/

حامد مصافی
یک شنبه 06 فروردین 1391, 13:52 عصر
چون:
در تبدیل از int به char فقط ۸ بیت سمت راست ذخیره می‌شود و بقیه از بین می‌رود. که این برابر با ضرب بولی آن عدد در ۸بیت تمام (۱۱۱۱۱۱۱۱) یا به عبارتی ۲۵۵ خواهد بود
۱۰۰۰ & ۱۵۵ = ۲۳۲
یا معادل اون ۱۱۱۰۱۰۰۰ چون شما char را با علامت تعریف کرده‌اید ۲۳۲ از کل ۸بیت تمام کم می‌شود و یک علامت منفی کنار آن قرار می‌گیرد (به دلیل ۱ بودت بیت هشتم) که این نیز برابر با ۲۵۵-۲۳۲ یا همان ۲۴ با علامت منفی خواهد بود.