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

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

fesetexceptflag() fonksiyonu

Bildirim

int fesetexceptflag(const fexcept_t* flagp, int excepts); (C99)

Açıklama

Excepts parametresi ile gösterilen float değer ortamının istisna değerlerini flagp değişken değerlerinden float veri sistemine yükler.

Parametreler

flagp: Float değer ortam değerlerinin okunduğu fexcept_t değişken işaretçisidir.

excepts: Okunacak durum değerleri listesidir.

Dönüş değeri

Fonksiyon başarılı bir şekilde çalışırsa 0, aksi takdirde 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;
    fexcept_t excepts;
    float fd1=35.24, fd2=5.42;

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

    Test_Except(fetestexcept(FE_ALL_EXCEPT));

    /* İstisna değerlerini kaydeder. */
    if (!fegetexceptflag(&excepts, FE_ALL_EXCEPT)) printf("İstisna değerleri başarılı bir şekilde kaydedildi!\n");

    feclearexcept (FE_ALL_EXCEPT);

    Test_Except(fetestexcept(FE_ALL_EXCEPT));

    /* İstisna değerlerini yükler. */
    if (!fesetexceptflag(&excepts, FE_ALL_EXCEPT)) printf("İstisna değerleri başarılı bir şekilde geri yüklendi!\n");

    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
İstisna değerleri başarılı bir şekilde kaydedildi!
İşlem hata bildirimi: Yok
İstisna değerleri başarılı bir şekilde geri yüklendi!
İşlem hata bildirimi: FE_INEXACT

Yukarıdaki program, div() fonksiyonunu int değer yerine float değerlerle çalıştırdığından, FE_INEXACT hata bildirimi alınır. Elde edilen istisna değerleri fegetexceptflag() fonksiyonu ile excepts değişkenine kaydedilir. Sonra, feclearexcept() istisna değerleri sıfırlanır. Önceden kaydedilmiş excepts değişken değeri fesetexceptflag() fonksiyonu ile geri yüklenir.