Кіріспе

C бағдарламалау тілі стандарты, 1999 жылғы түзету
бағдарламалау тілінің диалектісі

C99 (бұрын C9X деп аталған) – ISO/IEC 9899:1999 стандартының бұрынғы нұсқасы, C бағдарламалау тілі стандартының ескі нұсқасы үшін бейресми атау. Ол тіл мен стандартты кітапханаға жаңа мүмкіндіктер қосып, C90 нұсқасын кеңейтеді және іске асыруларға IEEE 754 1985 жылжымалы нүктелік арифметикасы және компилятор технологиясы сияқты қолда бар компьютерлік жабдықты тиімдірек пайдалануға көмектеседі. 2011 жылы жарияланған C11 нұсқасы C бағдарламалау тілі стандартының C99 стандартын жаңартады.

Тарих

ANSI 1989 жылы C бағдарламалау тілі үшін ресми стандарт жариялағаннан кейін, ол 1990 жылы халықаралық стандартқа айналды. Осыдан кейін C тілінің сипаттамасы біраз уақытқа дейін салыстырмалы түрде өзгермей тұрды, ал C++ өздігінен стандарттау жұмыстарын жүргізу барысында дамып жатты. Нормативтік түзету 1 1995 жылы C үшін жаңа стандарт құрды, бірақ ол 1989 жылғы стандарттың кейбір егжей-тегжейлерін түзетуге және халықаралық символдар жиынтығына толық қолдау көрсетуге бағытталған болатын. Стандарт 1990 жылдардың соңында тағы да қайта қаралып, 1999 жылы ISO/IEC 9899:1999 жарияланды, ол 2000 жылдың мамырында ANSI стандарты ретінде қабылданды. Осы стандарт нұсқасымен анықталған тіл көбінесе "C99" деп аталады. Халықаралық C стандартын ISO/IEC JTC1/SC22/WG14 жұмыс тобы күзеп қадағалайды.

IEEE 754 жылжымалы нүктелік қолдау

C99-дың маңызды ерекшелігі – оның сандық қолдауы, әсіресе IEEE 754 1985 (сондай-ақ IEC 60559 деп белгілі) стандартына сәйкес қалқыма нүктелік аппараттық құралдарға қол жеткізу мүмкіндігі. Бұл құралдар қазіргі заманғы процессорлардың басым көпшілігінде кездеседі ("IEC 60559 қалқыма нүктелі арифметикасы F қосымшасы" деп анықталған). IEEE 754 аппараттық құрылғысы жоқ платформалар оны бағдарламалық түрде де іске асыра алады. FLT EVAL METHOD == 1 бастапқыда K&R C-де қолданылған әдепкі бағалау әдісі болды, ол өрнектердегі барлық float мәндерін double-ге түрлендіретін; ал FLT EVAL METHOD == 0 да кеңінен қолданылады және операндардың түріне сәйкес қатаң бағалауды қамтамасыз етеді. (gcc үшін FLT EVAL METHOD == 2 32-биттік x86 жүйелерінде әдепкі болып табылады, ал FLT EVAL METHOD == 0 64-биттік x86-64 жүйелерінде әдепкі. Бірақ x86-64 жүйелерінде FLT EVAL METHOD == 2 mfpmath=387 опциясы арқылы да белгіленуі мүмкін.) C99 стандартына дейін компиляторлар аралық нәтижелерді дұрыс емес дөңгелектеуі мүмкін, әсіресе x87 қалқыма нүктелік аппараттық құралын қолданғанда, бұл компиляторға тән мінез-құлыққа алып келді; мұндай дұрыс емес дөңгелектеу C99 стандартына сәйкес компиляторларда рұқсат етілмейді (F қосымшасы).

Болашақ жұмысы

1999 жылғы C стандарты ратификацияланғаннан кейін стандарттау жұмыс тобы кіріктірілген өңдеуді жақсарту, қосымша таңбалық дерек түрлерін (Unicode қолдауы), және жақсартылған шекаралық тексеруі бар кітапхана функцияларын сипаттайтын техникалық есептерді дайындады. Ондық үзіліс нүктесі, қосымша математикалық арнайы функциялар және қосымша динамикалық жадты бөлу функциялары бойынша техникалық есептерді әзірлеу жұмысы жалғасуда. C және C++ стандарттар комитеттері жиектелген бағдарламалау спецификациялары бойынша ынтымақтастықта жұмыс істеп жатыр. C стандартының келесі редакциясы, C11, 2011 жылы ратификацияланды. C стандарттар комитеті қазіргі іске асырулармен сынақтан өтпеген жаңа мүмкіндіктерді қабылдауды шектейтін ережелерді қабылдады. Реттік нүктелерді нақтылау және жиектелген бағдарламалауды қолдау мақсатында жад моделін әзірлеуге көп күш салынды.