دروووود
چرا برای مورد اول میتوانیم از تبدیل ضمنی استفاده کنیم اما برعکسش باید صریح باشد؟؟؟؟؟؟؟؟؟؟ پشت پرده چه خبر است؟؟؟؟؟؟
هم char و هم int که از نوع مقادیر value type ها هستند....![]()
دروووود
چرا برای مورد اول میتوانیم از تبدیل ضمنی استفاده کنیم اما برعکسش باید صریح باشد؟؟؟؟؟؟؟؟؟؟ پشت پرده چه خبر است؟؟؟؟؟؟
هم char و هم int که از نوع مقادیر value type ها هستند....![]()
لطفا سوالتان را واضح تر بپرسید تا بتوان بهتر منظور شما را درک کرد. ما در چند و چون مطالعات شما نیستیم که :-D
موفق باشید.
سلام
گمانم منظور ایشان تفاوت کد نیاز به تبدیل با پرانتز است، مانند:
این درواقع تفاوت تبدیل Widening/Narrowing یا implicit/explicit است.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مواردی که بدیهی است و همواره و بدون شک انجام پذیر است خودکار انجام میشود.
مواردی که احتمال خطا و عدم انجام دارد یا ماهیت دیتا تغییر مهمی میکند را برنامه نویس باید صراحتاً با تایپ پرانتز انجام دهد و مسئولیت خطاهای منطقی یا زمان اجرای احتمالی را بپذیرید
بطور نمونه long هشت بایت است و تا 9223372036854775807 ظرفیت دارد، واضح است که هر long ای در یک int چهاربایتی که تا 2147483647 عدد را میگیرید جا نمیشود، شاید سرریز کند.
پس برنامه نویس باید تبدیل را صریح انجام دهد تا متوجه شود خطر عدم تبدیل وجود دارد و مسئولیت آن را بپذیرید، این مانند یکجور "تاییدیه" گرفتن از برنامه نویس است که حواست باشد کار خطرناکی، من انجام میدهم ولی پای خودت!
و...
به عنوان مطالب تکمیلی این دو مطلب نیز می تواند برای شما مفید باشد:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ( جالب است این را خودتان پرسیده اید.....)
از طرفی می توانید در استاندارد IEC60870-5-4 ساختار متغیر ها درون رم را بررسی کنید. در این سند متغیر هایی وجود دارد که تا به حال به گوشتان نخورده مانند unsigned float و یا BitString و یا float16 و ... که در کامپایلرها به صورت مستقیم وجود ندارند. این چیدمان می تواند وضعیت cast های مستقیم را کاملا شرح دهد. همچنین در استاندارد IEC61131-3 ویژگی های هر cast و cast های مجاز کاملا شرح داده شده است. به طور مثال به این شکل از این سند توجه کنید:
البته این مباحث مربوط به NET. نیست و یکسری استاندارد پایه ای برای type های پایه ای است و در یک برنامه نویسی High Level کاربرد مستقیم ندارند.
موفق باشید.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)