سي99

C99 (المعروف سابقًا باسم C9X ) هو اسم غير رسمي لـ ISO / IEC 9899: 1999، وهو إصدار سابق من معيار لغة البرمجة C.  يمتد الإصدار السابق (C90) بميزات جديدة للغة والمكتبة القياسية، ويساعد التطبيقات على الاستفادة بشكل أفضل من أجهزة الكمبيوتر المتاحة، مثل حساب الفاصلة العائمة IEEE 754-1985 وتقنية المترجم.  يحل إصدار C11 من معيار لغة البرمجة C، الذي تم نشره في عام 2011، محل C99.

مثال 
يوضح المثال التالي المشروح من كود C99 لحساب دالة الكسر المستمر الميزات الرئيسية: #include <stdio.h>
#include <math.h>
#include <float.h>
#include <fenv.h>
#include <tgmath.h>
#include <stdbool.h>
#include <assert.h>
 
double compute_fn(double z) // [1]
{
    #pragma STDC FENV_ACCESS ON // [2]

    assert(FLT_EVAL_METHOD == 2); // [3]

    if (isnan(z)) // [4]
        puts("z is not a number");

    if (isinf(z))
        puts("z is infinite");

    long double r = 7.0 - 3.0/(z - 2.0 - 1.0/(z - 7.0 + 10.0/(z - 2.0 - 2.0/(z - 3.0)))); // [5, 6]

    feclearexcept(FE_DIVBYZERO); // [7]

    bool raised = fetestexcept(FE_OVERFLOW); // [8]

    if (raised)
        puts("Unanticipated overflow.");

    return r;
}

int main(void)
{
    #ifndef __STDC_IEC_559__
    puts("Warning: __STDC_IEC_559__ not defined. IEEE 754 floating point not fully supported."); // [9]
    #endif

    #pragma STDC FENV_ACCESS ON

    #ifdef TEST_NUMERIC_STABILITY_UP
    fesetround(FE_UPWARD);          // [10]
    #elif TEST_NUMERIC_STABILITY_DOWN
    fesetround(FE_DOWNWARD);
    #endif

    printf("%.7g\n", compute_fn(3.0));
    printf("%.7g\n", compute_fn(NAN));

    return 0;
}

انظر أيضًا 

 C18 ، C11 ، ANSI C ، إصدارات من لغة البرمجة C.
 C ++ 17 ، C ++ 14 ، C ++ 11 ، C ++ 03 ، C ++ 98 ، إصدارات من معيار لغة البرمجة C ++
 النقطة العائمة ، لمزيد من المناقشة حول استخدام أجهزة IEEE 754

المراجع

قراءة متعمقة 

 
 
    
 الأساس المنطقي للمعيار الدولي - لغات البرمجة - التنقيح C 5.10 ، أبريل 2003 ، الأساس المنطقي لـ C99

روابط خارجية 

 أشياء جديدة في C9X
 ميزات C99

أدوات برمجة يونكس
سي (لغة برمجة)
معايير آي إي سي
معايير الأيزو