مقایسۀ برابری انواع float در استاندارد MISRA C

توسط | 18 مرداد, 1402 | برنامه نویسی میکرو, میکروآموزش | 0 دیدگاه

مقایسۀ برابری انواع float

اخبار جدید یوبرد در اینستاگرام

مقایسۀ برابری انواع float در استاندارد MISRA C، به عنوان یک الزام مطرح شده است (استاندارد MISRA C، قانون 13.3). متن این قانون بصورت زیر است:

Floating-point expressions shall not be tested for equality or inequality.

The inherent nature of floating-point types is such that comparisons of equality will often not evaluate to true even when they are expected to. In addition, the behaviour of such a comparison cannot be predicted before execution, and may well vary from one implementation to another.

در برنامه نویسی، عبارات floating-point نباید از نظر برابری یا نابرابری آزمایش شوند. ماهیت ذاتی انواع float به گونه‌ای است که مقایسۀ برابری آنها اغلب درست نخواهد بود. رفتار چنین مقایسه‌ای را نمی‌توان قبل از اجرا پیش‌بینی کرد و ممکن است از یک اجرا به اجرای دیگر متفاوت باشد. مثلاً نتیجۀ آزمایش if(x == y) وقتی که x و y از نوع float باشند، غیر قابل پیش‌بینی است.

مقایسۀ برابری و نابرابری داده های float موضوی است که بسیاری از برنامه نویسان تا قبل از اینکه به مشکلات آن برخورد کنند، با آن آشنایی ندارند. به عنوام مثال در زمانی که در پروژه، دو متغیر اعشاری داریم و یکی مثلا از سنسور دما و یا وزن آمده و x نام گذاری شده و دیگری یک متغیر float بوده که از کاربر گرفته شده و y نامگذاری شده و در کدنویسی شرط  if(x == y) و یا if( x <= y )  قرار می گیرد، رفتار نامشخصی مشاهده خواهد شد. به این معنی که در جایی انتظار داریم که این دو باهم برابر باشند، اما در برنامه برابر تشخیص داده نمی شود و برعکس. اینکه طرز صحیح مقایسه به چه صورت است در استاندارد MISRA C ترشیح شده است.

استاندارد MISRA C، یک استاندارد به منظور برنامه نویسی به زبان C برای سیستم های حیاتی است. این موارد بطور کامل در فیلم آموزش استاندارد MISRA C، کدنویسی سیستم های حیاتی یوبرد، ارائه شده است.

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

جدیدترین های برنامه نویسی در وبلاگ و میکروآموزش

غیر حرفه ای ترین روش کدنویسی

غیرحرفه ای ترین روش کدنویسی

غیر حرفه ای ترین روش در کدنویسی، استفاده از تاخیری است که کل سیستم را منتظر می گذارد.

پیچیدگی نرم افزار

پیچیدگی نرم افزار

پیچیدگی نرم افزار (software complexity) در یک محصول از پیچیدگی عملکرد کدهای آن (رابط های سیستمی متعدد و الزامات پیچیده) سرچشمه می گیرد.

لزوم کد تست برای سخت افزار

لزوم کد تست برای سخت افزار

لزوم کد تست برای سخت افزار، به تسهیل فرایند توسعه برمیگردد.

خواندن متغیر قبل از مقداردهی به آن در استاندارد MISRA C++

خواندن متغیر قبل از مقداردهی به آن در استاندارد MISRA C++

خواندن متغیر قبل از مقداردهی به آن در استاندارد MISRA C++، ممنوع شده است.

پیش ثبت نام تا به حد نصاب رسیدن کلاس خصوصی 3 نفرۀ آموزش STM32

0 دیدگاه

یک دیدگاه بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است