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

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

تبدیل عجیب و غریب اعداد صحیح!!!

+2 امتیاز
363 نمایش

اگه این عبارت رو توی C++ بررسی کنین نتیجه برعکسه! تبدیل خودکار اینجا همه چی رو خراب می‌کنه! چرا؟


cout<<((-1L < 1UL) ? "lower" ? "greater");
یک مشکل در مورد C++ این است که هم‌اکنون گرایشی قوی در زبان وجود دارد که شما را وادار می‌کند پیش از انجام هر کاری، همه‌ی جوانب آن را بدانید. (Larry Wall)
پرسیده شده جمعه ۱۰ آذر ۱۳۹۱ در C++ توسط CPP_Crawler2  
بازتگ شده جمعه ۲۳ فروردین ۱۳۹۲ توسط admin

1 پاسخ

0 امتیاز

نکته‌ی اول این‌که اون علامت سوال دوم احتمالاً باید : باشه!
نکته‌ی بعدی این‌که در C++ بنا بر قواعد تبدیل خودکار یا صریح، باید یک تبدیل انجام بده. (البته در کامپایلرهای جدید به این خط یک هشدار داده می‌شه)
در حقیقت تبدیل زیر انجام می‌شه

cout<<(((unsigned long int)-1L < 1UL) ? "lower" : "greater");

این تبدیل باعث می‌شه که -1L به عنوان یک عدد مثبت در نظر گرفته بشه و در این صورت این عدد مثبت بسیار بزرگ هست. بنابراین مقدار سمت چپ از مقدار سمت راست بزرگ‌تر می‌شه.

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