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

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

fesetenv() fonksiyonu

Bildirim

int fesetenv(const fenv_t* envp); (C99)

Açıklama

Fonksiyona geçirilen envp parametresi ile gösterilen ve float değer ortamının durum değerlerini içeren yapı değişken değerlerini yükler.

Parametreler

envp: Float değer ortamının durum değerlerini içeren fenv_t yapı değişkeni işaretçisidir.

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;
    fenv_t curr_env;
    float fd1=35.24, fd2=5.42;

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

    Test_Except(fetestexcept(FE_ALL_EXCEPT));

    /* Float değer ortam değerlerini kaydeder. */
    if (!fegetenv(&curr_env)) printf("Ortam değerleri başarılı bir şekilde kaydedildi!\n");

    feclearexcept (FE_ALL_EXCEPT);

    Test_Except(fetestexcept(FE_ALL_EXCEPT));

    /* Float değer ortam değerlerini yükler. */
    if (!fesetenv(&curr_env)) printf("Ortam 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
Ortam değerleri başarılı bir şekilde kaydedildi!
İşlem hata bildirimi: Yok
Ortam değerleri başarılı bir şekilde geri yüklendi!
İşlem hata bildirimi: FE_INEXACT

Yukarıdaki program, div() fonksiyonunu int değerlerle çalıştırır. Fonksiyonda float değerler yerine int değerler kullanıldığından FE_INEXACT hata bildirimi alınır. Float değer ortam değerleri fegetenv() fonksiyonu ile curr_env değişkenine kaydedilir. Ortam değerleri sıfırlandıktan sonra, fesetenv() fonksiyonu ile curr_env değişkenine kaydedilmiş olan ortam değişkenleri geri yüklenir.