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.