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

جهت طرح ابهامات و مشکلات درسی خود به این بخش مراجعه نمایید

مدیر انجمن: rosa_127

قفل شده
yakoza
کاربر ساده
کاربر ساده
پست: 11
تاریخ عضویت: یک‌شنبه 11 اسفند 1387, 9:18 pm

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

پست توسط yakoza » شنبه 21 شهریور 1388, 2:05 pm

سوال مربوط به تست 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:

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

ممنون
تنها گنجی که ارزش جستجو کردن دارد هدف است

yakoza
کاربر ساده
کاربر ساده
پست: 11
تاریخ عضویت: یک‌شنبه 11 اسفند 1387, 9:18 pm

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

پست توسط yakoza » شنبه 21 شهریور 1388, 6:18 pm

فکر کنم خودم متوجه شدم

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

درسته ؟
تنها گنجی که ارزش جستجو کردن دارد هدف است

آواتار کاربر
پیر کاردانی
كاربر عالي
كاربر عالي
پست: 856
تاریخ عضویت: سه‌شنبه 14 آبان 1387, 12:18 pm
محل اقامت: قطعه ای از بهشت

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

پست توسط پیر کاردانی » یک‌شنبه 22 شهریور 1388, 1:32 pm

yakoza نوشته شده:فکر کنم خودم متوجه شدم

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

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

یا علی
تلاش نکن تا شکست نخوری

تا تلاشی دیگر
یا علی

قفل شده