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

by | 18 مرداد, 1402 | برنامه نویسی میکرو, میکروآموزش | 0 comments

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

رضا اسدی

رضا اسدی

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

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

فرق آماتور و حرفه‌ای در الکترونیک

فرق آماتور و حرفه‌ای در الکترونیک

در این میکروآموزش، فرق آماتور و حرفه‌ای در الکترونیک را با نکات فنی واقعی، تجربه صنعتی و استانداردهای بین‌المللی بررسی می‌کنیم.

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

علت سوختن برد الکترونیکی چیست؟

علت سوختن برد الکترونیکی چیست؟ در این میکروآموزش، با مقایسه طراحی معماری و برد الکترونیکی، مفهوم طراحی پایدار را بررسی می‌کنیم.

پرینتر خمیر قلع در مونتاژ SMD

پرینتر خمیر قلع در مونتاژ SMD

پرینتر خمیر قلع در مونتاژ SMD یکی از مراحل کلیدی در فرآیند تولید برد است. این آموزش اهمیت این مرحله و دقت مورد نیاز را بررسی می‌کند.

مسیر برگشت جریان در طراحی PCB

مسیر برگشت جریان در طراحی PCB

مسیر برگشت جریان در طراحی PCB مفهومی کلیدی برای عملکرد بی‌نویز است. این آموزش با نگاهی الهام‌گرفته از معماری ایرانی، اهمیت آن را بررسی می‌کند.

0 Comments

Submit a Comment

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

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

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

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

آموزش FreeRTOS یوبرد

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

دانلود

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

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