BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <fenv.h> (C99) > feclearexcept

feclearexcept() fonksiyonu

Bildirim

int feclearexcept(int excepts); (C99)

Açıklama

Fonksiyona geçirilen excepts parametre değerinde yer alan float değer istisnalarını (durum değerlerini) temizler.

Parametreler

excepts: Float değer istisnaları içeren değerdir.

Dönüş değeri

Eğer tüm istisnalar silinir veya excepts parametre değeri 0 ise 0 değeri, bir hata meydana gelirse sıfır olmayan bir değer geri döndürür.

Örnek


#include <stdio.h>
#include <stdlib.h>
#include <fenv.h>

void Test_Except(int idsonuc);

int main(void) {
    div_t dv;
    int id1=7, id2=2;
    float fd1=7.54, fd2=2.63;

    feclearexcept (FE_ALL_EXCEPT);
    dv = div(fd1, fd2);

    Test_Except(fetestexcept(FE_ALL_EXCEPT));

    feclearexcept (FE_ALL_EXCEPT);
    dv = div(id1, id2);

    Test_Except(fetestexcept(FE_ALL_EXCEPT));

    return 0;
}

void Test_Except(int idsonuc)
{
  printf("İşlem hata bildirimi:");

  if (idsonuc==0) printf(" Yok");                     //  0 (0x00)
  if (idsonuc==FE_INVALID) printf(" FE_INVALID");     //  1 (0x01)
  if (idsonuc==FE_DENORMAL) printf(" FE_DENORMAL");   //  2 (0x02)
  if (idsonuc==FE_DIVBYZERO) printf(" FE_DIVBYZERO"); //  4 (0x04)
  if (idsonuc==FE_OVERFLOW) printf(" FE_OVERFLOW");   //  8 (0x08)
  if (idsonuc==FE_UNDERFLOW) printf(" FE_UNDERFLOW"); // 16 (0x10)
  if (idsonuc==FE_INEXACT) printf(" FE_INEXACT");     // 32 (0x20)

  printf("\n");
}

Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:

İşlem hata bildirimi: FE_INEXACT
İşlem hata bildirimi: Yok

Yukarıdaki program, div() fonksiyonunu önce float değerlerle daha sonra int değerlerle çalıştırır. Fonksiyonun ilk çağrısında int değerler yerine float değerler kullanıldığından FE_INEXACT hata bildirimi alınır. İkinci çağrıda ise, int değerler kullanıldığından hata bildirimi yapılmaz. Fonksiyon çağrılarından önce feclearexcept() fonksiyonu ile tüm hata durum bayrakları temizlenir.