مقایسۀ برابری انواع 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، کدنویسی سیستم های حیاتی یوبرد، ارائه شده است.

رضا اسدی

رضا اسدی

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

جدیدترین های میکروآموزش

از کدویژن استفاده نکنید.

دیگه استفاده از CodeVision زشته

اگر دانشپذیر یا مدرس در این زمینه هستید، پیشنهاد می کنیم که از این نرم افزار استفاده نکنید. برای کار با میکروکنترلرهای AVR به سراغ نرم افزارهایی مثل Atmel Studio و Visual Studio بروید.

از چه میکروکنترلری استفاده کنیم؟

از چه میکروکنترلری استفاده کنیم؟

اگر نیاز به یک جواب کلیدی دارید، پاسخ آن میکروکنترلر STM32 است. امروزه میکروکنترلرهای STM32 بهترین گزینه برای شما در ایران و آسیا و بسیاری از کشورهای دنیاست.

چند برد الکترونیکی برای طیف مختلف محصولات؟

چند برد الکترونیکی برای طیف مختلف محصولات؟

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

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

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

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

0 دیدگاه

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

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

آموزش های یوبرد

آموزش TFT LCD با TouchGFX و STM32 یوبرد

گرافیک کاربرپسند با میکروکنترلر ST

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش زبان C و MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

آموزش میکروکنترلرهای AVR یوبرد

شاهکار 8 بیتی Atmel

آموزش میکروکنترلرهای LPC یوبرد

یادگار فیلیپس

دانلود

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

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