تمرین برنامه نویسی c:
اگر a از نوع char باشد، مقدار x بعد از اجرای عبارت زیر در هر یک از دو فرض چقدر است؟
الف- x از نوع char باشد.
ب- x از نوع int باشد.
x=(((((a=2)<1)?0:100)%11)«8);
پاسخ تشریحی: ابتدا a برابر 2 قرار داده می شود. سپس در عبارت:
(((a=2)<1)?0:100)
چون 2 کوچکتر از 1 نیست، کل عبارت برابر 100 خواهد بود. در مرحله بعد باقیمانده تقسیم 100 بر 11 محاسبه می شود که برابر با 1 است. در نهایت هم حاصل شیفت به چپ 1 به میزان 8 بیت محاسبه می شود که اگر x از نوع char باشد به دلیل 8 بیتی بودن، مقدار 0 در آن قرار خواهد گرفت و اگر x از نوع int باشد، مقدار 256 یا 0x100 در آن قرار خواهد گرفت.
@KnowledgePlus
Post #973
851