ورود

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



iranch
11-07-2015, 01:12
دروووود
چرا برای مورد اول میتوانیم از تبدیل ضمنی استفاده کنیم اما برعکسش باید صریح باشد؟؟؟؟؟؟؟؟؟؟ پشت پرده چه خبر است؟؟؟؟؟؟ :n37:
هم char و هم int که از نوع مقادیر value type ها هستند.... :n38:

Msba
11-07-2015, 14:50
لطفا سوالتان را واضح تر بپرسید تا بتوان بهتر منظور شما را درک کرد. ما در چند و چون مطالعات شما نیستیم که :-D
موفق باشید.

_H2_
11-07-2015, 23:56
سلام
گمانم منظور ایشان تفاوت کد نیاز به تبدیل با پرانتز است، مانند:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این درواقع تفاوت تبدیل Widening/Narrowing یا implicit/explicit است.
مواردی که بدیهی است و همواره و بدون شک انجام پذیر است خودکار انجام میشود.
مواردی که احتمال خطا و عدم انجام دارد یا ماهیت دیتا تغییر مهمی میکند را برنامه نویس باید صراحتاً با تایپ پرانتز انجام دهد و مسئولیت خطاهای منطقی یا زمان اجرای احتمالی را بپذیرید

بطور نمونه long هشت بایت است و تا 9223372036854775807 ظرفیت دارد، واضح است که هر long ای در یک int چهاربایتی که تا 2147483647 عدد را میگیرید جا نمیشود، شاید سرریز کند.
پس برنامه نویس باید تبدیل را صریح انجام دهد تا متوجه شود خطر عدم تبدیل وجود دارد و مسئولیت آن را بپذیرید، این مانند یکجور "تاییدیه" گرفتن از برنامه نویس است که حواست باشد کار خطرناکی، من انجام میدهم ولی پای خودت!
و...

Msba
12-07-2015, 19:00
به عنوان مطالب تکمیلی این دو مطلب نیز می تواند برای شما مفید باشد:

این ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
این ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])( جالب است این را خودتان پرسیده اید.....)

از طرفی می توانید در استاندارد IEC60870-5-4 ساختار متغیر ها درون رم را بررسی کنید. در این سند متغیر هایی وجود دارد که تا به حال به گوشتان نخورده مانند unsigned float و یا BitString و یا float16 و ... که در کامپایلرها به صورت مستقیم وجود ندارند. این چیدمان می تواند وضعیت cast های مستقیم را کاملا شرح دهد. همچنین در استاندارد IEC61131-3 ویژگی های هر cast و cast های مجاز کاملا شرح داده شده است. به طور مثال به این شکل از این سند توجه کنید:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

البته این مباحث مربوط به NET. نیست و یکسری استاندارد پایه ای برای type های پایه ای است و در یک برنامه نویسی High Level کاربرد مستقیم ندارند.

موفق باشید.