اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

نوع لیترال چندکاراکتری و مقدار آن

0 امتیاز
336 نمایش

در این سوال توضیح داده شده که برخورد کامپایلر مایکروسافت با لیترال چندکاراکتری چطوری هست. لیترال چندکاراکتری به صورت زیر نوشته می‌شه

'absd'

مثلاً می‌شه انتسابش داد به یک متغیر صحیح یا کاراکتری

int x = 'ab';
char x = 'ab';

سوال اینجاست که این لیترال بالاخره باید مثل همه‌ی لیترال‌های دیگه نوع خاصی داشته باشه. این نوع خاص چیه؟

و مقدار این لیترال چطور محاسبه می‌شه؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده دوشنبه ۱۷ تیر ۱۳۹۲ در C++ توسط prodo  
ویرایش شده دوشنبه ۱۷ تیر ۱۳۹۲ توسط prodo

1 پاسخ

0 امتیاز

نوع لیترال کاراکتری int تعریف شده بنابراین یک لیترال کاراکتری حداکثر باید همون تعداد بایت داشته باشه که یه int. بنابراین برای یک محیط با int ۳۲ بیتی کد زیر کار نمی‌کنه

int x = 'abcde';

چون بیشتر از ۳۲ بیت هست.

مقدار یک لیترال کاراکتری در استاندارد تعریف نشده و گفته شده که مبتنی بر پیاده‌سازی هست. یعنی مایکروسافت ترجیح داده که مقدار صحیح این لیترال مقدار پشت سرهم بیت‌های کاراکترهاش باشه. ممکنه یه کامپایلر دیگه طور دیگه‌ای پیاده‌سازی کنه.

بنابراین در استاندارد 'ab' درسته ولی مقدارش مبتنی بر کامپایلره و کدی که به این صورت نوشته بشه ممکنه قابل حمل نباشه.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده دوشنبه ۱۷ تیر ۱۳۹۲ توسط prodo