صفحه 1 از 1

یک سوال ساده در مورد c ( تبدیل نوع داده ها)

ارسال شده: شنبه 21 شهریور 1388, 2:05 pm
توسط yakoza
سوال مربوط به تست 12 صفحه 65 کتاب درس و کنکور c++ مقسمی

در برنامه زیر خروجی کدام است ؟

کد: انتخاب همه

main()
{ int a=353; char b=a;
printf("\n %d%c%c%d",a,a,b,b);}
گزینه ها

1)97aa97 2)343GG97 3)353GG353 4)353aa97


جواب گزینه 4 میشه
چون متغیر b از نوع char هست و چون علامت داره رنجش از -128 تا +127 و چون 353 از این رنج بیشتره باید تبدیل به باینری بشه و 8 بیت اولش رو جدا کنیم و تو متغیر b بریزیم
حالا مشکل من اینجاست من 8 بیت اول رو درآوردم 01100001 از اونجایی که تو کتاب توضیح داده چون متغیر b علامت داره باید متمم 2 ازش بگیریم ولی تو جواب تشرحی این کار رو نکرده ktb:

می خواستم در مورد اینگونه سوالات یه توضیح مختصر بدید

ممنون

Re: یک سوال ساده در مورد c ( تبدیل نوع داده ها)

ارسال شده: شنبه 21 شهریور 1388, 6:18 pm
توسط yakoza
فکر کنم خودم متوجه شدم

چون سمت چپترین بیت 0 هستش پس علامت عدد مثبته و نمی خواد متمم 2 بگیریم ولی اگه سمت چپترین بیت 1بود یعنی عدد دارای علامته و باید متمم 2 بگیریم

درسته ؟

Re: یک سوال ساده در مورد c ( تبدیل نوع داده ها)

ارسال شده: یک‌شنبه 22 شهریور 1388, 1:32 pm
توسط پیر کاردانی
yakoza نوشته شده:فکر کنم خودم متوجه شدم

چون سمت چپترین بیت 0 هستش پس علامت عدد مثبته و نمی خواد متمم 2 بگیریم ولی اگه سمت چپترین بیت 1بود یعنی عدد دارای علامته و باید متمم 2 بگیریم

درسته ؟
سلام
مگه جواب این نمی شه؟ 353aa97
همونی که فهمیدی درسته.

یا علی